Klasyczne naruszenie Open Close Principle

Bardzo lubię konstrukcję enum. Dzięki niej i wsparciu IDE mogę bardzo łatwo zautomatyzować sobie pracę. [csharp] public enum SomeEnum { Dog, Cat, Lion } public class SomeAnimals { public void Sounds(SomeAnimals animal) { switch (animal) { case SomeEnum.Cat : Console.WriteLine("Meow"); break; case SomeEnum.Dog : Console.WriteLine("Wof"); break; … } } } [/csharp] Po dodaniu nowej wartości […]

Klasyczne naruszenie Open Close Principle Read More »

Open Close Principle czyli jak zarobić ale się nie narobić.

Wyobraźmy sobie taką sytuację: jest sklep internetowy, podczas składania zamówienia system wylicza rabat – przy zamówieniach 500-1000 zł 5%, powyżej 1000 zł 10%, powyżej 5000 dodatkowo darmowa przesyłka. Brzmi znajomo? [csharp] public double CalculateDiscount(IOrder order) { if (order.Total <= 500 && order.Total > 1000) { return order.Total*0.05; } if (order.Total > 1000) { return order.Total*0.1;

Open Close Principle czyli jak zarobić ale się nie narobić. Read More »

O krytyce

“Most humans seem to be much better at critiquing than creating. We can channel this wisely thru feedbacks for a greater good” Źródło: http://twitter.com/venkat_s/status/198771575573585920 Krytykowanie jest łatwe bo nie wymaga wiedzy i nie wymaga takiego wysiłku jak przy tworzeniu.

O krytyce Read More »

Interface Segregation Principle czyli interfejs powinien być jak modelka–przeraźliwie chudy

Jestem fanem interfejsów jak to wcześniej już pisałem, zatem dzisiaj będzie temat łatwy i przyjemny o interfejsach właśnie. W sam raz na ciężki po długo weekendowy poniedziałek. Interface Segregation Principle mówi, że klient nie powinien być zmuszany do implementowania interfejsów, których nie używa. Z tego wynika, że interfejs powinien być minimalistyczny lub po prostu możliwie

Interface Segregation Principle czyli interfejs powinien być jak modelka–przeraźliwie chudy Read More »

Kwadrat jest prostokątem czyli Liskov Substitution Principle (LSP)

Od młodego uczą nas, że każdy kwadrat jest prostokątem. Później uczymy się programować i zaczyna się tragedia. Matematycznie kwadrat jest specyficznym  przypadkiem prostokąta programistycznie już nie bardzo. Metoda ustawiająca szerokość wywołana dla prostokąta powinno ustawić jego szerokość a w przypadku kwadratu? W przypadku kwadratu oczekujemy, że ustawienie szerokości ustawi również wysokość. Zobaczmy zatem taki kod:

Kwadrat jest prostokątem czyli Liskov Substitution Principle (LSP) Read More »

Koncepcja elastycznej architektury

Wyobraźmy sobie, że cała aplikacja nad którą chcemy pracować zbudowana jest tak, że nie ma żadnych referencji do bazy danych, żadnych referencji związanych ze sposobem wyświetlania, żadnych okienek, stron www… nic. Tylko klasę, która mogła by wyglądać tak: [csharp] public class MyGreatApplication { public IAbout About() { // zwraca informacje na temat aplikacji } public

Koncepcja elastycznej architektury Read More »

Architektura czyli jedna z najbardziej niedocenianych umiejętności

… na szczęście nie przez wszystkich. Intencją niniejszej serii jest przedstawienie podstaw programowania w trochę inny sposób, dlatego mówiąc najbardziej niedoceniana umiejętność w domyśle tyczy się to początkujących. Starsi albo sami dotarli do odpowiedniej wiedzy albo życie ich nauczyło. Jak wyglądają pierwsze kroki w programowaniu? Po opanowaniu pętli for i foreach, ifów i caseów, Console.WriteLineów

Architektura czyli jedna z najbardziej niedocenianych umiejętności Read More »

Dependency Inversion Principle – czyli co powinno zależeć od czego

Po Single Responsiblity Principle najważniejsza (moim zdaniem) zasada programowania obiektowego – Dependency Inversion Principle. Mówi ona, że obiekty powinny być zależne od abstrakcji a nie od konkretnej klasy. A po ludzku, w żadnej definicji funkcji i w żadnej deklaracji zmiennej nie powinniśmy używać nazwy klasy. Zamiast tego powinniśmy używać interfejsy albo klasy abstrakcyjne czyli zamiast

Dependency Inversion Principle – czyli co powinno zależeć od czego Read More »

Single Responsibility Principle – ciąg dalszy

Wczoraj mówiliśmy o single responsibility principle (SRP) czyli o zasadzie pojedynczej odpowiedzialności. Jest to zasada, która moim zdaniem najwięcej zmienia w dotychczasowych przyzwyczajeniach programistycznych. Na początku jest trochę męcząca ponieważ zgodnie z nią w klasie nie powinniśmy tworzyć innych obiektów. Jak to? Nie mogę używać słowa kluczowego new? Nie mogę tworzyć obiektów? No właściwie to

Single Responsibility Principle – ciąg dalszy Read More »

Scroll to Top