Today I want to present a different point of view on C# applications design. If you are programming in that language most of the time, it’s probably not what you’re used to see. However I found it interesting, because it allows to achieve a few important goals...
Strona głównaUżytkownik
graf85 | użytkownik
Sztuka programowania 3549 dni, 1 godzinę, 59 minut temu 297 źrodło rozwiń
There are a lot of discussions in the Internet about the sense of testing the code with private accessors. In my opinion all of the discussions coming from the wrong understanding of the topic. What is unit testing? It is a testing of units, not classes, not methods exposed by some API. The term private is supposed to be private to the consumer, not to unit tests. Let's have a look at it closer..
Sztuka programowania 3878 dni, 13 godzin, 11 minut temu 117 źrodło rozwiń
Od dawna jedną z rzeczy, którą chciałem zrobić było napisanie książki. I w końcu się udało :). Wczoraj została oficjalnie wydana moja pierwsza książka – ReSharper Essentials.
Zapewne większość z Was miała do czynienia z aplikacjami pisanymi przy wykorzystaniu ASP.NET MVC. Zapewne pracowaliście nad jakimś projektem, im bliżej końca, tym co raz częściej wkradają się błędy, aplikacja jest na tyle duża, że łatwo wstawić przez przypadek do widoku jakieś duperele, jest mnóstwo resource’ów, które bardzo ciężko ogarnąć, mapowanie view-model to jakiś koszmar. Brzmi źle? Wcale nie musi tak być. Oto kilka porad (subiektywnych), w jaki sposób możemy uniknąć bałaganu:
Sztuka programowania 3915 dni, 19 godzin, 20 minut temu 406 źrodło rozwiń
Until now we had many excuses for not writing integration tests:we prefer unit tests over integration testsour business logic (aka services) is separated and thoroughly testedwe keep our ontrollers on a dietUI consists mostly of standard elements (aka widgets) which are tested on their ownwe are lazy But there was still too much space for error. From time to time a seemingly innocent change in Razor view (or HTML helper, or filter, or “something completely irrelevant”) unexpectedly broke one of the page...
Sztuka programowania 3990 dni, 20 godzin, 12 minut temu 105 źrodło rozwiń
Czasem w trakcie pracy zdarza się, że musimy przygotować dane testowe. Przyczyny mogą być różne, możemy potrzebować danych w celu przetestowania fragmentu aplikacji lub ...
Czasem zwykłe metody debugowania nie wystarczają, czasem watch-e i sprawdzanie krok po kroku jest nie wystarczające. Czasem chciało by się sprawdzić wartość obiektu, do którego nie mamy referencji. No właśnie, wszystkie normalne narzędzia debuggowania jakie udostęnia Visual Studio pozwalają na oglądanie wszystkiego co mamy w zasięgu referencji albo gdzieś po callstack-u możemy się do “tego” dorwać. Co jednak jeśli i to za mało? Na pomoc Make Object ID. Zatrzymując program w momencie gdy ma...
NSubstitute to (dla tych co nie znają jeszcze) taki Moq na sterydach. Sytuacja wygląda tak, mamy klasę, która potrzebuje jakiś zależności, mniej więcej tak: public class SomeClass { public SomeClass(INeedSomeStuff stuff) { // ....... } } public interface INeedSomeStuff { string DoSomeStuff(string param); void DoSomeOtherStuff(); } Możemy użyć moq i napisać: var moq = new Mock
Zapewne każdy profesjonalny programista zna zasadę DRY, której nazwa jest zarazem skrótem jej treści Don’t Repeat Yourself czyli zalecenia Nie Powtarzaj Się. Najczęściej stosuje się ją, by przeciwdziałać powielaniu kodu wykonującemu tę samą czynność (czy to przez jego niepotrzebne, ponowne napisanie czy też przez zwykłe przeklejanie). To co ciekawego w tej regule, to fakt, że w swej treści skierowana jest ona do ...
Sztuka programowania 4031 dni, 19 godzin, 47 minut temu 210 źrodło rozwiń
Tło problemu - jest wystawiony opasły Windows Service po remotingu. Implementacja to wielka klasa z dziesiątkami metod, typowe legacy code. Z pewnych architektonicznych przyczyn zostało postanowione, że cykl życia komponentów rejestrowanych w Castle, wykorzystywanych w wyżej wymienionych, dziesiątkach metod, musi by...
Sztuka programowania 4031 dni, 19 godzin, 47 minut temu 133 źrodło rozwiń
O wzorcach projektowych w ASP.NET MVC słyszał chyba każdy. Większość z nas przynajmniej raz widziała jakiś filmik instruktażowy bądź wideokonferencję promującą stosowanie właściwych wzorców na tej platformie. Jednakże po opanowaniu teorii przychodzi wreszcie pora na to, aby wcielić ją w życie. Co się wtedy okazuje?
It is all about people and cooperation! April 25-26 – dotNetConf took place, online conference for .NET developers, organized by Scott Hanselman and Javier Lozano April 27 – I text Pawel Sawicz, that we can organize something similar with Polish speakers and name it dotNetConfPL, he said: “it’s a good idea”. (motivation++) April 28 – Pawel told me that Michal Franc is also interested and we created google doc to write down ideas and todos. ...
by MJ Decorator is a design pattern used to dynamically ”decorate” (e.g. add new actions) another classes. Let’s say that you have class which describes Window. It can be opened or closed. Then, you decide to decorate it with curtains or to clean it – you will do it yourself or hire somebody, who will be a decorator. Let’s create a simple project: 1) First of all, you need to add “Decorator” folder. Inside of this folder please create Window.cs class which will describe our window in the real world...
Architektura 4051 dni, 21 godzin, 2 minuty temu 168 źrodło rozwiń
W kilku wpisach chciałbym przedstawić różnicę między tymi dwoma typami. Osoby piszące aplikacje finansowe z pewnością znają te różnice bo to właśnie w tych typach aplikacji, double powodował bardzo poważne błędy. Przed przeczytaniem wpisu, niezbędne będzie przypomnienie sobie następujących informacji: 1. Przeliczanie systemu binarnego, szczególnie części dziesiętnej. 2. Liczby zmiennoprzecinkowe. Nie będę tego opisywał na blogu, ponieważ są to zagadnienia wyjaśniane już wiele razy – ale pisząc aplika...
Sztuka programowania 4066 dni, 19 godzin, 10 minut temu 293 źrodło rozwiń
Zanim przejdę do tytułowej biblioteki chciałbym, aby czytelnik odpowiedział na następujące pytanie. Dlaczego tworzenie stron internetowych jest trudne? Jakieś pomysły? Moim, zdaniem największą trudnością jest wspieranie wielu różnych przeglądarek, które z kolei w zależności od wersji wpierają lub nie pewne standardy. Króluje tutaj oczywiście IE, w którym wszystko musi być inaczej, na szczęście powoli to się z...
W tym wpisie chciałbym przedstawić co to jest system ekspercki i jak można taki system stworzyć w .Net. System ekspercki lub doradczy to taki system, który na podstawie uzyskanych faktów (danych od użytkownika) potrafi wybrać lub doradzić najlepsze rozwiązanie jakiegoś problemu. Użytkownik przekazuje informację do systemu odpowiadając na pytania. Istnieje wiele przykładów takich systemów np. system diagnozujący co mogło popsuć się w aucie. Człow...
W tym wpisie zamieszczę kilka wskazówek i informacji jak w miarę bezboleśnie rozpocząć naukę i pracę z Linq i na co warto zwrócić uwagę. Praca z linq daje możliwość obsługi wielu źródeł danych za pomocą tych samych metod, jako przykład wykorzystam bazę danych, którą pokazałem kilka wpisów temu. Do połączenia z bazą danych używam EntityFramework. Dla przypomnienia schemat poniżej. Składania W linq mamy możl...
“A single conversation with a wise man is better than ten years of study” Powyższe chińskie powiedzenie jest myślą przewodnią konferencji 33degree. Konferencji bardzo mocno nakierowanej na Javę. Znalazłem się na niej praktycznie tylko i wyłącznie dzięki Robertowi C. Martinowi. To jego wykład przyciągną mnie na tą konferencje. Rok później również udało mi się na nią pojechać bo okazało się, że jest bardzo wartościowa, a w dodatku wybierając ciekawe dla mnie (.netowca) tematy nie miałem naw...
Zauważyłem, że czasami programiści używają Debug.WriteLine, aby wyświetlić jakieś informacje w oknie output: Debug.WriteLine("Jakies informacje."); Nie ma w tym nic złego, ale czasami dodawana jest powyższa linia tylko tymczasowo, aby ułatwić sobie debugowanie (szczególnie aplikacji wielowątkowej). Visual Studio pozwala osiągnąć ten sam efekt, za pomocą zwykłego breakpoint’a. Wystarczy najpierw ustawić breakpoint (naciskamy F9), a potem kliknąć na nim i wybrać When Hit: Zostanie otworzone nowe ok...
Do napisania niniejszego wpisu zainspirowała mnie pewna dyskusja, którą prowadziłem z kolegą po fachu. Dyskusje wywołało niefortunnie(wg. mojego kolegi) użyte przez ze mnie słowo mock zamiast stub. Za nim przejdę do opisywania dyskusji szybko trochę teorii i nomenklatury. W tym wpisie celowo pomijam techniki takie jak TDD czy BDD i pewnie tracę przez to wielu czytelników;). Pragnę skupić się na tym czym jest i był...
Sztuka programowania 4080 dni, 21 godzin, 25 minut temu 457 źrodło rozwiń