Strona głównaUżytkownik

pzielinski | użytkownik

pzielinski
pzielinski
27 178,29
3886 dni, 20 godzin, 25 minut temu
21 lutego, 2010
dotnetomaniak.pl

Co byście powiedzieli na taki kod?publicclass Person { publicstring FirstName; publicstring LastName; publicstring GetFullName() { returnstring.Format("{0} {1}", FirstName, LastName); } } Na pierwszy rzut oka może nic poważnego. Jednak jeśli chcemy pisać kod zgodny z praktykami C#, powinniśmy zwrócić uwagę na następujące kwestie:Enkapsulacja, FirstName,LastName powinni być ukryte i ewentualnie wyeksponowane za pomocą setterow\getterów.GetFullName jest dobrym sposobem dla Javy (a w...

Dziel się z innymi:
Piotr Zieliński » Code Review: pola w C#

Inne 4462 dni, 2 godziny, 44 minuty temu pzielinski 381 źrodło rozwiń

Zachęcam do kolejnego artykułu, tym razem o wzorcu MVVM: http://msdn.microsoft.com/pl-pl/library/wprowadzenie-do-wzorca-projektowego-model-view-viewmodel-na-przykladzie-aplikacji-wpf.aspxExplore posts in the same categories:Patterns & Practices, WPF

Tagi: MVVM
Dziel się z innymi:
Piotr Zieliński » Artykuł: Wprowadzenie do wzorca projektowego Model-View-ViewModel na przykładzie aplikacji WPF

Architektura 4466 dni, 5 godzin, 21 minut temu pzielinski 919 źrodło rozwiń

W Visual Studio bardzo łatwo tworzyć Splash Screen- czyli okno powitalne, wyświetlające się w momencie ładowania aplikacji. Każda z większych aplikacji posiada taki gadget (Visual Studio, Office itp.). Zamiast wyświetlać pusty ekran, dużo lepszym rozwiązaniem jest wyświetlenie SplashScreen’u z logiem firmy\aplikacji. W VS można tego dokonać za pomocą kilku kliknięć:Dodajemy obrazek do solucji (Add->Add Existing Item).W oknie właściwości wybieramy BuildAction –> Splash Screen.Gotowe! Można uruchomić aplik...

Tagi: splashscreen
Dziel się z innymi:
Piotr Zieliński » SplashScreen

Windows 4468 dni, 5 godzin, 30 minut temu pzielinski 289 źrodło rozwiń

Rozważmy następujący kod:IEnumerable

Tagi: Code review, Linq
Dziel się z innymi:
Piotr Zieliński » Code review: Pułapka z LINQ

Inne 4470 dni, 23 godziny, 40 minut temu pzielinski 451 źrodło rozwiń

W postach oznaczonych “Code review” zamierzam przedstawiam dobre i złe praktyki pisania kodu. Posty przeważnie będą składały się z fragmentu kodu i opisu co jest w nim źle. Dziś spójrzmy na:StreamReader streamReader =new StreamReader(File.Open(path, FileMode.Open)); string header = streamReader.ReadLine(); string dataPoints = streamReader.ReadLine(); string[] dataPointArray = dataPoints.Split(newchar[]{';’});streamReader.Close(); Co w tym jest jest nie tak? W przypadku gdy np. ReadLine wyrzuci wyjątek, ...

Tagi: Code review
Dziel się z innymi:
Piotr Zieliński » Code review: słowo kluczowe using

Inne 4474 dni, 20 godzin, 36 minut temu pzielinski 408 źrodło rozwiń

Nieprawidłowa obsługa wyjątków może przynieść więcej problemów niż pożytku.  O obsłudze błędów można byłoby napisać artykuł, jednak w poście chciałbym skupić się wyłącznie na kilku aspektach. 1. Pierwszym problemem jest fakt, że część programistów używa wyjątków do sytuacji po prostu niewyjątkowych. Jak sama nazwa mówi, wyjątek powinien być zastosowany gdzie może zdarzyć się coś niespodziewanego. Spójrzmy więc na poniższy fragment:int number; try { number =int.Parse(text); } catch { numbe...

Dziel się z innymi:
Piotr Zieliński » Obsługa wyjątków–kilka najczęściej popełnianych błędów

Architektura 4477 dni, 8 godzin, 25 minut temu pzielinski 462 źrodło rozwiń

Zapraszam do lektury: http://msdn.microsoft.com/pl-pl/library/prism–nawigacja-na-podstawie-zdefiniowanych-stanow.aspx

Tagi: Prism
Dziel się z innymi:
Piotr Zieliński » Artykuł: Prism – nawigacja na podstawie zdefiniowanych stanów

Narzędzia 4480 dni, 12 godzin, 9 minut temu pzielinski 105 źrodło rozwiń

Zapraszam do poczytania o komendach i zdarzeniach dostarczonych przez framework PRISM: http://msdn.microsoft.com/pl-pl/library/zdarzenia-i-komendy-w-prism

Tagi: Prism
Dziel się z innymi:
Piotr Zieliński » Artykuł: Prism – Zdarzenia i komendy

Windows 4483 dni, 12 godzin, 8 minut temu pzielinski 149 źrodło rozwiń

Klasa Barrier umożliwia synchronizacje kilku wątków. Mechanizm bardzo znany np. z Ady pozwala dopuścić wykonanie kodu wyłącznie jeśli inne wątki na to się zgadzają. Załóżmy, że mamy 4 wątki robiące równoległe jakieś obliczenia. Po ich zakończeniu chcemy scalić wynik ale musimy poczekać aż wszystkie zadania zostaną ukończone. W C# 4.0 można wykorzystać tzw. taski, ale w tym artykule skupimy się na Barrier, która służy to dużo bardziej skomplikowanych zadań. Przypuśćmy, że nasz algorytm składa się z kilku...

Tagi: Barrier
Dziel się z innymi:
Piotr Zieliński  » Rendezvous w C#–klasa Barrier

Inne 4486 dni, 10 godzin, 16 minut temu pzielinski 202 źrodło rozwiń

Wiele osób z pewnością kojarzy pliki PDB, przynajmniej z nazwy. Myślę, jednak, że w praktyce mało kto zdaje sobie sprawę co one zawierają i kiedy mogą się przydać programiście. W poście zatem chciałbym przybliżyć praktyczne korzyści z używania Program Database Files. Z pewnością PDB kojarzy się z debuggowaniem i niestety z czymś niepotrzebnym w środowisku produkcyjnym – co jak się okaże jest nieprawdą! Zacznijmy od wprowadzenia teoretycznego, PDB dla .NET  zawiera:Nazwy plików z kodem źródłowym.Nazwy lo...

Tagi: pdb
Dziel się z innymi:
Piotr Zieliński » Kiedy używać plików PDB?

Inne 4489 dni, 6 godzin, 31 minut temu pzielinski 363 źrodło rozwiń

W C# 3.0 wprowadzono nowy typ inicjalizacji pól klas, przykład:class SampleClass { publicint X { get; set; } publicint Y { get; set; } } SampleClass sampleClass =null; try { sampleClass =new SampleClass {X =5, Y =10}; } catch (Exception) { } int y = sampleClass.Y; Przed c# 3.0 programiści zwykle używali następującej konstrukcji:SampleClass sampleClass =null; try { sampleClass=new SampleClass(); sampleClass.X =5; sampleClass.Y =10; } catch (Exception) { } int y = samp...

Dziel się z innymi:
Piotr Zieliński » Inicjalizacja właściwości obiektu

Inne 4491 dni, 23 godziny, 50 minut temu pzielinski 242 źrodło rozwiń

Dzisiaj prosta i częsta sprawa – obsługa zdarzeń.  Zdefiniujmy fikcyjne zdarzenie:class SampleClass { publicevent EventHandler EventHappened; } Następnie mamy jakąś metodę, która po wykonaniu własnej logiki, wywołuje zdarzenie. Jak powinno to zostać prawidłowo wykonane? Zacznijmy od niepoprawnego podejścia:class SampleClass { publicevent EventHandler EventHappened; privatevoid Method() { EventHappened(this,new EventArgs()); } } Metoda spowoduje wyjątek jeśli żadne z...

Tagi: events
Dziel się z innymi:
Piotr Zieliński » Obsługa zdarzeń – dwa podejścia

Inne 4495 dni, 1 godzinę, 27 minut temu pzielinski 324 źrodło rozwiń

Na początku stwórzmy strukturę z konstruktorem przyjmującym dwa parametry:publicstruct SampleStruct { public SampleStruct(int x, int y) { _x = x; _y = y; } privateint _x, _y; } Czy powyższy kod jest prawidłowy? Tak, skompiluje się i będzie działał bez problemów. Zdefiniujmy więc domyślny konstruktor:publicstruct SampleStruct { public SampleStruct() { _x = _y =0; } public SampleStruct(int x, int y) { _x = x; _y = y; ...

Tagi: struktury
Dziel się z innymi:
Piotr Zieliński » Dlaczego struktury nie mogą posiadać konstruktora bez parametrów?

Inne 4498 dni, 20 godzin, 39 minut temu pzielinski 216 źrodło rozwiń

W zeszłym poście pisałem o strukturach w c#. Jednym z ważnych efektów ubocznych jest boxing oraz unboxing. Jak wiemy z poprzedniego wpisu struktury przechowywane są na stosie a klasy na stercie. Boxing to niż innego jak wrapping struktury (lub jakiekolwiek innego typu wartościowego) w obiekt przechowywany na stercie. Na przykład:int value=0; object boxedValue=value; // boxing Zmienna value przechowywana jest na stosie, z kolei boxedValue na stercie (pamiętajmy o nagłówku oraz GC). Należy zwrócić szcz...

Tagi: boxing, unboxing
Dziel się z innymi:
Piotr Zieliński » Boxing i unboxing.

Inne 4501 dni, 6 godzin, 1 minutę temu pzielinski 218 źrodło rozwiń

Znajomość różnić między klasą a strukturą w c# jest bardzo ważna ze względu na kwestie wydajnościowe. Sposób wykorzystania może czasami wydawać się bardzo podobny, jednak to co dzieje się w tle jest kompletnie różne. W przypadku C++, struktury i klasy były bardzo podobne i reprezentowane były w pamięci w taki sam sposób. Różnica polegała na tym, że pola klas domyślnie były prywatne, a struktur publiczne. Przede wszystkim struktura jest wartością (value type) a klasa typem referencyjnym. Value Type jest ...

Tagi: klasy, struktury
Dziel się z innymi:
Piotr Zieliński » Klasy i struktury w C#

Inne 4508 dni, 19 godzin, 6 minut temu pzielinski 373 źrodło rozwiń

W dzisiejszym poście kilka słów i imporcie implementacji. W poprzednich postach, pokazałem jak dokonywać prostych importów. Dzisiaj trochę więcej szczegółów. Dla przypomnienia, aby zaimportować (wstrzyknąć) implementację, w najprostszym przypadku używamy po prostu atrybutu Import:publicclass SampleViewModel { //... [Import] public IMessageBoxService MessageBoxService{get;set;} } Powyższy przykład reprezentuje wstrzyknięcie właściwości. W podobny sposób można wstrzykiwać parametry dla ko...

Tagi: MEF
Dziel się z innymi:
Piotr Zieliński » MEF: import, część III

Inne 4510 dni, 5 godzin, 8 minut temu pzielinski 102 źrodło rozwiń

W ostatnim poście przedstawiłem MEF wraz z prostym przykładem. Dzisiaj przyjrzymy się dokładniej sposobom eksportu. Znamy już podstawowy sposób eksportu klasy:[Export(typeof(IMessageBoxService))] publicclass WpfMessageBoxService:IMessageBoxService { } Oprócz przekazania typu, można także użyć zwykłego string’a. Ze względu jednak na łatwość popełnienia literówki lepszym sposobem jest użycie typeof. Oprócz klas można również eksportować właściwości np.:publicclass Order { [Export("OrderValue")] ...

Tagi: MEF
Dziel się z innymi:
Piotr Zieliński » MEF: eksport, część II

Narzędzia 4516 dni, 5 godzin, 56 minut temu pzielinski 122 źrodło rozwiń

MEF jest kolejnym frameworkiem umożliwiającym tworzenie rozszerzalnych aplikacji. Pomijając marketing serwowany na różnych stronach, jest to po prostu biblioteka umożliwiająca dependency injection. W wersji .NET 4.0 została zintegrowana w .NET Framework i nie musi być instalowana osobno. Na oficjalnej stronie można sporo poczytać o budowie MEF’a jednak w poście chciałbym ograniczyć to do minimum ponieważ dla mnie osobiście, zbyt dokładne intro do tematu po prostu zniechęca mnie do dalszego czytania. Zac...

Tagi: MEF
Dziel się z innymi:
Piotr Zieliński » Managed Extensibility Framework część I

Architektura 4516 dni, 5 godzin, 56 minut temu pzielinski 206 źrodło rozwiń

Spóźniona trochę porada jak wdrażać projekty Azure za pomocą Web Deploy: http://msdn.microsoft.com/pl-pl/library/szybka-aktualizacja-projektu-azure-za-pomoca-web-deploy.aspx

Tagi: Azure
Dziel się z innymi:
Piotr Zieliński » Szybka aktualizacja projektu Azure za pomocą Web Deploy

Inne 4519 dni, 4 godziny, 48 minut temu pzielinski 40 źrodło rozwiń

Od dwóch tygodni pracuję  nad projektem open-source przeznaczonym dla programistów zarówno tych początkujących jak i zaawansowanych. Z pewnością wielu z Was kojarzy projekt Robocode. Robocode umożliwia pisanie algorytmów dla czołgów, które następnie mogą stoczyć bitwę. Zadaniem programistów jest napisanie jak najlepszych algorytmów. Mój projekt przeznaczony jest wyłącznie dla programistów .NET i został oparty na XNA, a co za tym idzie, całość będzie się działa w świecie trójwymiarowym. Kilka ważnych za...

Tagi: nauka
Dziel się z innymi:
Piotr Zieliński » think.Net: Platforma do nauki programowania i algorytmów AI

Inne 4522 dni, 12 godzin, 30 minut temu pzielinski 305 źrodło rozwiń

1 2... 9 10 11 12 13 14... 19 20

Najaktywniejsi w tym miesiącu