Programowanie

Jak to jest, że kompilując dwa razy mogę otrzymać różny wynik?

Kompilacja to właściwie nic innego jak tłumaczenie z jednego języka na drugi. W przypadku C# (a dokładniej .net-a) to tłumaczenie odbywa się dwa razy. Raz z języka czytelnego dla kompilatorów aminokwasowych (c#) na MSIL czyli na taki w dużym uproszczeniu zarządzalny asembler (zrozumiały przez rzadko którego białkowca) a drugi raz z owego MSIL do takiego …

Jak to jest, że kompilując dwa razy mogę otrzymać różny wynik? Read More »

Pokrycie kodu testami i rzut oka na NCrunch-a i NCover-a

Co to jest CodeCoverage? Jest to pokrycie kolejnych linii kodu testami jednostkowymi. Metryka ta pokazuje ile procent linijek kodu ma przynajmniej jeden test jednostkowy, który ją wykonuje. Sprawa wydaje się prosta, tyle tylko, że w świecie .neta kod kompiluje się do… no właśnie do kodu pośredniego. Dopiero ten kod pośredni jest kompilowany w razie potrzeby …

Pokrycie kodu testami i rzut oka na NCrunch-a i NCover-a Read More »

Co trzeba zrobić aby w Visual Studio mieć bogaty intelisense

Rozważmy taki kawałek kodu: [csharp] public double CaclulateField(double width, double height){ return width * height; } [/csharp] Podpowiadanie składni dla niego wygląda tak: Ogólnie szału nie ma. Można się domyśleć co robi funkcja i co podać w parametrach jednak czasem chciało by się mieć pięknie opisane parametry – szczególnie gdy tworzymy publiczne api, które będzie …

Co trzeba zrobić aby w Visual Studio mieć bogaty intelisense Read More »

Wywiad z Robertem C. Martinem – Uncle Bobem

Jeśli jeszcze nie jesteś przekonany do potrzeby profesjonalizmu to najwyższa pora zapoznać się z poniższym wywiadem z Robertem C. Martinem. A jeśli nie wiesz kim jest Robert C. Martin to najwyższa pora zapoznać się z jego opiniami na temat programowania, TDD i profesjonalizmu w programowaniu. [youtube=http://www.youtube.com/watch?v=OIHvp7WzuH0&hd=1] Jeżeli zainteresował Cię ten temat to warto zapoznać się …

Wywiad z Robertem C. Martinem – Uncle Bobem Read More »

Common Reuse Principle–czyli jeśli używasz jednej klasy to używasz wszystkich

Zasada Common Reuse Principle mówi, że klasy w pakiecie/assembly są ponownie używane wspólnie. Jest to konsekwencja Reuse Release Equivalence Principle z której wynika, że klient posiada referencje do całej biblioteki a nie pojedynczej klasy. Z tego zaś wynika, że jeżeli polega na jednej klasie (wykorzystuje jedną klasę)  to może wykorzystywać wszystkie. W końcu publikując bibliotekę …

Common Reuse Principle–czyli jeśli używasz jednej klasy to używasz wszystkich Read More »

Common Closure Principle – czyli o coś porządkowaniu

Sporo czasu poświęciłem na elektronikę i mimo tego, że nie byłem i nie jestem przesadnie pedantyczny to tranzystory i rezystory zawsze miałem uporządkowane w klasterach z posklejanych pudełek po zapałkach lub woreczkach strunowych. Takie postępowanie powodowało, że zawsze wiedziałem gdzie szukać tego jednego rezystora, który właśnie potrzebowałem. Takie segregowanie nie ma znaczenia przy 10-20-50 elementach, …

Common Closure Principle – czyli o coś porządkowaniu Read More »

Reuse Release Equivalence Principle czyli dlaczego nie kopiujemy kodu

W poprzednich częściach przeszliśmy przez zasady SOLID. S – Single Responsibility Principle (oraz cz. 2) O – Open Close Principle (oraz cz. 2) L – Liskov Substitution Principle I – Interface Segregation Principle D – Dependency Inversion Principle Słowo SOLID bardzo dobrze odzwierciedla to, do czego te zasady prowadzą czyli do budowania solidnego kodu. Przez …

Reuse Release Equivalence Principle czyli dlaczego nie kopiujemy kodu Read More »

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 »