dotnetomaniak.pl

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

Domain Driven Design (DDD) zostało zdefiniowane przez Erica Evansa w jego książce Domain-Driven Design: Tackling Complexity in the Heart of Software wydanej w 2003 roku. DDD nie jest metodyką tworzenia kodu, a definiowaniem komunikacji (połączeń) pomiędzy obiektami.

Dziel się z innymi:
Programowanie w .NET: Domain Driven Design

Sztuka programowania 1629 dni, 17 minut temu psz750 262 rozwiń

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 1629 dni, 17 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 1631 dni, 21 godzin, 7 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 1635 dni, 3 godziny, 52 minuty 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 1635 dni, 18 godzin, 2 minuty 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 1641 dni, 14 godzin, 45 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 1643 dni, 21 godzin, 53 minuty temu pzielinski 88 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 1646 dni, 20 godzin, 46 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 1649 dni, 20 godzin, 21 minut 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 1653 dni, 10 godzin, 43 minuty 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 1655 dni, 19 godzin, 18 minut temu burczu 107 rozwiń

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

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

Sztuka programowania 1655 dni, 19 godzin, 18 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 1655 dni, 19 godzin, 18 minut temu pzielinski 78 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 1658 dni, 20 godzin, 45 minut temu pzielinski 114 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 1658 dni, 20 godzin, 45 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 1660 dni, 4 godziny, 14 minut temu http://krzysztofmorcinek.wo... 140 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 1662 dni, 1 godzinę, 8 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 1665 dni, 15 godzin, 44 minuty 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 1668 dni, 3 godziny, 40 minut 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 1671 dni, 3 godziny, 45 minut temu pzielinski 337 rozwiń

1 2... 34 35 36 37 38 39
Szkolenia SecurITum

maj

25.
CodeEurope
Warszawa

październik

Zobacz wszystkie

Najaktywniejsi

1

macko (32 816,53)

2

http://pawlos.blo... (31 626,47)

3

pzielinski (27 178,29)

4

gordon_shumway (21 178,87)

5

paduda (20 336,33)

6

psz750 (13 018,14)

7

rroszczyk (10 385,99)

8

Damian (9 041,08)

9

danielplawgo (7 235,99)

10

arek (6 807,95)

11

burczu (6 214,22)

12

PaSkol (5 393,84)

13

lukaszgasior (4 097,38)

14

jj09 (3 578,06)

15

jedmac (3 318,39)

16

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

17

CaMeL (2 954,87)

18

spetz (2 933,27)

19

mnikolajuk (2 596,93)

20

lkurzyniec (2 592,76)