dotnetomaniak.pl

dotnetomaniak.pl - Najnowsze artykuły o .NET w dziale Sztuka programowania - Strona 34

Czasami metody mają zbyt dużo parametrów przez co wywołanie ich jest niewygodne i może zajmować nawet dwie linie. Oczywiście pierwsza rzecz, którą powinniśmy zrobić jest sprawdzenie czy metoda czasami nie wykonuje zbyt wielu operacji tzn. przestrzega zasadę Single Responsibility.  Jeśli mamy pewność, że metoda przestrzega wszelkie zasady i jest dobrze zaprojektowana wtedy trzeba pomyśleć jak zmniejszyć liczbę parametrów. W poście przedstawię kilka prób uzyskania takiego efektu. Logiczne wydaje się, utwo...

Tagi: C#, parametry
Dziel się z innymi:
Piotr Zieliński » Metoda z wieloma parametrami

Sztuka programowania 1542 dni, 10 godzin, 29 minut temu pzielinski 137 rozwiń

Dziś prosta zasada przekazywania parametrów ale jednak często łamana. Kod:privatestaticvoid Display(string[] strings) { foreach (string text in strings) { Console.WriteLine(text); } } Powyższa metoda ma za zadanie wyświetlenie wyłącznie elementów. Parametr wejściowy (tablica string’ów) jest zbyt specyficzny i nie pozwala na przekazanie wszystkich zbiorów danych. Na przykład poniższy kod nie skompiluje się:List

Tagi: C#, parametry
Dziel się z innymi:
Piotr Zieliński » Code Review: przekazywanie parametrów

Sztuka programowania 1545 dni, 7 godzin, 19 minut temu pzielinski 193 rozwiń

Przyjrzyjmy się następującemu fragmentowi kodu:publicclass SampleClass { privateint _value =10; } W rzeczywistości zostanie wygenerowany konstruktor, ustawiający pole value na 10. Kod IL:.method public hidebysig specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 L0000: ldarg.0 L0001: ldc.i4.s 10 L0003: stfld int32 SampleClass::value L0008: ldarg.0 L0009: call instance void [mscorlib]System.Object::.ctor() L000e: nop L_000f: ret } Na...

Tagi: C#, konstruktor, pola
Dziel się z innymi:
Piotr Zieliński » Inicjalizacja pól a konstruktory

Sztuka programowania 1548 dni, 14 godzin, 5 minut temu pzielinski 63 rozwiń

Jestem zwolennikiem terminologii angielskiej, czyli wszystkie identyfikatory w kodzie są w tym właśnie języku. Dzięki temu kod rzeczywiście jest samodokumentujący się, bo nie dławi go dysonans angielskiej składni i polskiej terminologii, który nieodwołalnie prowadzi do identyfikatorów typu „ponglish„, np. BeforeZapisz, RestoreZasoby...

Me z .NET tete-a-tete » Wymóg angielskiej terminologii uderza rykoszetem w dialogi

Sztuka programowania 1549 dni, 4 godziny, 14 minut temu PaSkol 131 rozwiń

Dziś mały eksperyment. Chciałbym pokazać jaki jest faktycznie spadek wydajności jeśli zachodzi potrzeba boxing’u i unboxing’u. Wiele o tym ostatnio pisałem ale nie pokazałem najważniejszego – liczb opisujących wydajność.  Na początek porównanie boxing z unboxing:privatestaticvoid TestBoxingAndUnboxing() { object boxedValue =null; // boxing Stopwatch stopwatch = Stopwatch.StartNew(); for (int i =0; i < iterations;="" i++)="" {="" int="" unboxed="(int)" boxedvalue;="" }="" stopwatch.stop();="" ...

Tagi: boxing, C#, unboxing
Dziel się z innymi:
Piotr Zieliński » Boxing, unboxing–test

Sztuka programowania 1555 dni, 57 minut temu pzielinski 86 rozwiń

W poprzednim poście napisałem kilka słów o dwóch sposobach wywoływania konstruktorów statycznych. Dziś chciałbym pokazać, że faktycznie ma to wpływ na wydajność. Rozważmy następujący przykład:publicclass BeforeInitSementics { publicstaticint Value =10; } publicclass PreciseSemantics { publicstaticint Value; static PreciseSemantics() { Value =20; } } internalclass Program { privateconstint Iterations =100000000; privatestaticvoid Test1() { // Precise ...

Dziel się z innymi:
Piotr Zieliński » Statyczne konstruktory–wydajność część II

Sztuka programowania 1557 dni, 8 godzin, 5 minut temu pzielinski 87 rozwiń

Konstruktory statyczne zwykłe służą do inicjalizowania pól statycznych lub walidacji typów generycznych np.:class Generic

Dziel się z innymi:
Piotr Zieliński » Statyczne konstruktory–wydajność

Sztuka programowania 1560 dni, 6 godzin, 58 minut temu pzielinski 109 rozwiń

Dziś w poście o kolejnej regule pisania dobrego kodu. Prawo Demeter mówi o relacjach między klasami a konkretnie o tym z jakimi obiektami dana klasa może komunikować się. W skrócie, prawo nakazuje odwoływanie się tylko do “bliskich przyjaciół” czyli obiektów, które są bardzo znane danemu obiektowi. Brzmi to trochę abstrakcyjnie dlatego przenieśmy to na  świat programowania obiektowego. Każda metoda obiektu A może wywoływać wyłącznie metody następujących obiektów: 1. obiektów przekazanych jako parametr w...

Dziel się z innymi:
Piotr Zieliński » Prawo Demeter

Sztuka programowania 1563 dni, 6 godzin, 33 minuty temu pzielinski 171 rozwiń

Nie wiem, czy istnieje jakieś bardziej oficjalne tłumaczenie pure methods,więc aby uniknąć śmiesznych nazw przez resztę postu będę posługiwał się nazwą angielską. Nie chodzi mi o metody czysto wirtualne, które są powszechnie znane.  W .NET istnieje atrybut PureAttribute, którym możemy oznaczać metody pure. Warto zacząć jednak od czystej definicji, czym jest metoda pure? W skrócie metoda pure nie zmienia stanu obiektu a jedynie operuje na parametrach wejściowych. Aby spełniać wymogi metod pure należy:Par...

Tagi: C#, pure method
Dziel się z innymi:
Piotr Zieliński » Pure methods

Sztuka programowania 1566 dni, 20 godzin, 55 minut temu pzielinski 156 rozwiń

Postem tym chciałbym rozpocząć mini cykl o zastosowaniu wzorców projektowych w języku JavaScript -  wbrew pozorom, w tym języku również można je stosować! Na pierwszy ogień postanowiłem wziąć jeden z moich ulubionych wzorców - strategię. Myślę, że większość z nas, stosowała i stosuje ten wzorzec na co dzień (czasem nawet nieświadomie), jednak dla przypomnienia (za wikipedią): Wzorzec strategii definiuje rodzinę algorytmów, z których każdy zdefiniowany jest w osobnej klasie implementującej wspólny interf...

burczu programator - blog: Wzorce projektowe w JavaScript - Strategia

Sztuka programowania 1569 dni, 5 godzin, 30 minut temu burczu 99 rozwiń

Opis, trzech wzorców asynchroniczności stosowanych w .net framework.

Dziel się z innymi:
Podejście do asynchroniczności w .NET

Sztuka programowania 1569 dni, 5 godzin, 30 minut temu us3r 218 rozwiń

Klasa XmlSerializer służy do serializacji całych klas. Za pomocą atrybutu XmlIgnore można wykluczyć właściwości, których nie chcemy zapisywać. Problem pojawia się gdy w klasie pochodnej chcemy wykluczyć jakieś pola z klasy bazowej tj.:class Employee { publicstring FirstName { get; set; } } class Manager:Employee { //...} Serializaując Employee chcemy zapisać FirstName. Z kolei serializując Manger nie chcemy już tego robić. Jak uzyskać taki efekt? Dodając atrybut XmlIgnore w Employee  spowoduje...

Tagi: C#, serializacja
Dziel się z innymi:
Piotr Zieliński » Ignorowanie pól klasy bazowej podczas serializacji

Sztuka programowania 1569 dni, 5 godzin, 30 minut temu pzielinski 76 rozwiń

W C# można implementować interfejsy na dwa sposoby: jawny oraz niejawny. Rozważmy poniższy interfejs:interface ISerializable { void Serialize(string path); } Implementacja jawna:class ExplicitImplementation:ISerializable { #region ISerializable Membersvoid ISerializable.Serialize(string path) { thrownew NotImplementedException(); } #endregion } Implementacja niejawna:class ImplicitImplementation:ISerializable { #region ISerializable Membersvoid ISerializable.Serial...

Piotr Zieliński » Interfejsy: implementacja jawna vs. niejawna

Sztuka programowania 1572 dni, 6 godzin, 57 minut temu pzielinski 109 rozwiń

Rozpoznaję taki jakby pattern przeładowanych metod dla string.Format(…). Jest wykorzystywany w wielu miejscach we Frameworku jak i poza nim. Chciałem zwrócić uwagę na ILog.DebugFormat() w bibliotece log4net oraz na Console.WriteLine().

Dziel się z innymi:
Trochę więcej kultury | Show me the code

Sztuka programowania 1572 dni, 6 godzin, 57 minut temu http://krzysztofmorcinek.wo... 109 rozwiń

Życie programisty byłoby prostsze, gdyby zawsze używał explicite CultureInfo gdy korzysta z ToString() oraz string.Format(...).

Dziel się z innymi:
Trochę kultury! | Show me the code

Sztuka programowania 1573 dni, 14 godzin, 27 minut temu http://krzysztofmorcinek.wo... 139 rozwiń

O strukturach na blogu pisałem już wielokrotnie m.in.: “Klasy i struktury w C#”, “Dlaczego struktury nie mogą posiadać konstruktora bez parametrów?”, “StructLayout – wprowadzenie”, “StructLayout–zastosowanie”. W pierwszych z tych postów, przedstawiającym różnice między klasami a strukturami napisałem, że co prawda struktury nie mogą dziedziczyć po klasach ale mogą za to implementować interfejsy. Dzisiaj chciałbym rozszerzyć to o kilka słów gdyż w tamtym wpisie ograniczyłem się tylko do stwierdzenia, że j...

Dziel się z innymi:
Piotr Zieliński » Struktury danych a interfejsy

Sztuka programowania 1575 dni, 11 godzin, 20 minut temu pzielinski 98 rozwiń

W zeszłym tygodniu na dotNETomaniaku wypromowano artykuł na temat interfejsów. Zapoznałem się z nim i odnoszę wrażenie, że autor nie rozumie w pełni roli interfejsu i myli go z klasą bazową. O taką pomyłkę rzeczywiście nietrudno, wiele klas buduje bowiem swoją funkcjonalność na podstawie interfejsów, ale to nie oznacza automatycznie, że interfejs jest ich przodkiem, zaczynem. Trzeba zacząć od tego, że choć interfejs umieszcza się w definicji klasy tak samo jak klasę dziedziczoną...

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » Interfejs (chciałbym sprostować), to nie jest klasa bazowa

Sztuka programowania 1579 dni, 1 godzinę, 56 minut temu PaSkol 97 rozwiń

Wyrażenia lambda są łatwe w użyciu, ale jak to bywa z takimi ułatwieniami również nieświadomie można spowodować poważne problemy. Przykład:class SampleClass { } class Factory { private Type _type =typeof (SampleClass); public Func

Tagi: C#, Lambda
Dziel się z innymi:
Piotr Zieliński » Code Review: implementacja wewnętrzna wyrażeń lambda oraz metod anonimowych

Sztuka programowania 1581 dni, 13 godzin, 52 minuty temu pzielinski 143 rozwiń

Kolejna część artykułu o dobrych i złych praktykach. Zapraszam do lektury: http://msdn.microsoft.com/pl-pl/library/dobre-i-zle-praktyki-w-c-sharp–czesc-6.aspx

Dziel się z innymi:
Piotr Zieliński  » Dobre i złe praktyki w C# – część VI

Sztuka programowania 1584 dni, 13 godzin, 57 minut temu pzielinski 336 rozwiń

Notacja węgierska to ZŁOOOOOO! Słychać to ze wszystkich stron i trudno się z tym nie zgodzić. Przedrostki nazw identyfikatorów określające typy takiego identyfikatora nigdy nie były jakimś nowatorskim rozwiązaniem – prędzej protezą. Czy oznacza to jednak, że całość tego pomysłu należy odbierać negatywnie? W mojej opinii nie. A dlaczego - o tym tenże wpis.

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » O dewaluacji węgierskiej notacji, a także o jej nadinterpretacji

Sztuka programowania 1584 dni, 13 godzin, 57 minut temu PaSkol 148 rozwiń

1 2... 32 33 34 35 36 37
Szkolenia SecurITum

marzec

03.
Wroc#
Wrocław

kwiecień

03.
4developers
Warszawa

maj

17.
InfoShare
Gdańsk
Zobacz wszystkie

.NET Developer Days 2015

W tym roku ponownie jak w poprzednim jesteśmy jednym z patronów medialnych konferencji .NET Developer Days. W tym roku jednym z prelegentów będzie Scott Hanselman.  czytaj więcej
2015-07-22

Najaktywniejsi

1

macko (32 816,53)

2

http://pawlos.blo... (31 520,45)

3

pzielinski (27 178,29)

4

gordon_shumway (21 178,87)

5

paduda (20 336,33)

6

psz750 (13 018,14)

7

rroszczyk (10 383,88)

8

Damian (9 011,08)

9

danielplawgo (7 235,99)

10

arek (6 727,86)

11

burczu (6 214,22)

12

PaSkol (5 393,84)

13

lukaszgasior (4 097,38)

14

jj09 (3 418,06)

15

jedmac (3 293,38)

16

http://jakub-flor... (3 224,66)

17

CaMeL (2 954,87)

18

mnikolajuk (2 596,93)

19

spetz (2 548,07)

20

lkurzyniec (2 544,29)