Zasady dobrego programisty

Don’t Repeat Yourself (DRY) – nie powtarzaj się

Jest to jedna z najważniejszych zasad i powinniśmy traktować ją bardzo poważnie. Objawia się ona nie tylko powielaniem tego samego kodu i używanie metody Copy&Paste.

Single-Responsibility Principle (SRP) – zasada pojedynczej odpowiedzialności

Żadna klasa nie może być modyfikowana z więcej niż jednego powodu.

Jeśli jesteśmy w stanie wyobrazi sobie więcej niż jeden bodziec skłaniający programistę do zmiany klasy, mamy do czynienia z klasą rozciągającą się na więcej niż jeden obszar odpowiedzialności.*

Open/Close Principle (OCP) – zasada otwarte-zamknięte

Składniki oprogramowania (klasy, moduły, funkcje itp.) powinny być otwarte na rozbudowę, ale zamknięte dla modyfikacji.

Na początku może wydawać się to sprzeczne bo jak mamy wprowadzać zmiany skoro nie możemy modyfikować kodu. Odpowiedzią jest abstrakcja. W świecie obiektowym abstrakcje mają postać abstrakcyjnych klas bazowych, a grupa niezwiązanych, możliwych zastosowań jest reprezentowana przez klasy pochodne.
Moduł, który wykorzystuje abstrakcje, może być zamknięty dla modyfikacji, ponieważ jego działanie jest uzależnione właśnie od tej abstrakcji. Dzięki temu mamy możliwość rozszerzania tego modułu bez potrzeby modyfikacji jego kodu.

Liskov Substitution Principle (LSP) – zasada podstawień Liskov

Musi istnieć możliwość zastępowania typów bazowych ich podtypami.

Znaczenie tej zasady staje się oczywiste, kiedy rozważymy konsekwencje jej naruszenia. Przypuśćmy, że dysponujemy funkcją f, która otrzymuje za pośrednictwem swojego parametru referencję do pewnej klasy bazowej B. Załóżmy także, że przekazanie na wejściu funkcji referencji do klasy D (potomnej względem klasy B) powoduje błędne działanie tej funkcji. W takim przypadku klasa D narusza zasadę podstawienia Liskov (LSP). Oznacza to, że klasa D jest wrażliwa w kontekście funkcji f.
Prostym przykładem naruszenia tej zasady jest weryfikacja typów za pomocą instrukcji if-else

Dependecy-Inversion Principle (DIP) – zasada odwracania zależności

Moduły wysokopoziomowe nie powinny zależeć od modułów niskopoziomowych. Obie grupy modułów powinny zależeć od abstrakcji.

Abstrakcje nie powinny zależeć od szczegółowych rozwiązań. To szczegółowe rozwiązania powinny zależeć od abstrakcji.

Interface Segregation Principle (ISP) – zasada segregacji interfejsów

Ma na celu wyeliminowanie nieporęcznych “grubych” interfejsów. Do tej grupy zaliczamy nadmiernie rozbudowane i niespójne interfejsy klas. Innymi słowy, interfejsy takich klas należy dzielić na mniejsze grupy metod. Każda taka grupa odpowiada za obsługę innego zbioru klientów. Oznacza to, że część klientów będzie korzystała z jednej grypy metod, podczas gdy pozostałe aplikacje klienckie będą korzystały z pozostałych grup metod.

Zasada skautów: Pozostaw obóz czyściejszym, niż go zastałeś.

(Staraj się pozostawić ten świat nieco lepszym niż go zastałeś)

*Stosowanie reguł jest błędem, jeśli nie znajdujemy uzasadnienia w sytuacji faktycznej. O osi zmian możemy mówić wtedy i tylko wtedy, gdy odpowiednie zmiany mają miejsce.

Bibliografia:

  • Agile Programowanie zminne, Robert C. Martin, Micah Martin
  • Czysty kod, Robert C. Martin

2,797 thoughts on “Zasady dobrego programisty”

  1. Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point.
    You definitely know what youre talking about, why throw away
    your intelligence on just posting videos to your site when you could be giving us something enlightening
    to read?

  2. I’m really loving the theme/design of your website.
    Do you ever run into any web browser compatibility issues?

    A few of my blog readers have complained about my blog not operating
    correctly in Explorer but looks great in Safari.
    Do you have any tips to help fix this problem?

  3. Excellent post. I was checking continuously this blog and
    I am inspired! Extremely useful info specifically the final
    section 🙂 I take care of such info much. I used to be looking for
    this certain information for a long time. Thank you and best of luck.

  4. Hey there! Quick question that’s totally
    off topic. Do you know how to make your site mobile friendly?
    My site looks weird when viewing from my iphone. I’m trying to find a template or
    plugin that might be able to fix this problem. If you have any recommendations,
    please share. With thanks!

  5. Thanks , I’ve recently been looking for information approximately this
    topic for ages and yours is the greatest I have came upon till now.
    But, what about the bottom line? Are you positive about the source?

  6. Hey there this is somewhat of off topic but I was wondering if blogs use
    WYSIWYG editors or if you have to manually code with HTML.

    I’m starting a blog soon but have no coding skills
    so I wanted to get guidance from someone with experience. Any help would be enormously appreciated!

  7. I am not sure where you are getting your info, but great topic.
    I needs to spend some time learning more or understanding more.
    Thanks for fantastic info I was looking for this info for my mission.

  8. I believe everything said was actually very reasonable.

    However, what about this? what if you were to
    write a killer headline? I ain’t saying your information is
    not good, however suppose you added a headline that grabbed folk’s attention? I mean Zasady dobrego programisty – pietowski.com is a little vanilla.

    You might look at Yahoo’s front page and note how they create
    article titles to get people to open the links. You might
    add a video or a related picture or two
    to get readers interested about what you’ve written. In my opinion,
    it might bring your blog a little livelier.

  9. Normally I do not read post on blogs, but I would like
    to say that this write-up very forced me to check out
    and do so! Your writing style has been surprised me. Thank you, very nice post.

  10. I do consider all of the concepts you have offered in your post.
    They’re very convincing and will definitely work. Nonetheless,
    the posts are too brief for newbies. May just you please extend them
    a little from next time? Thanks for the post.

  11. If you wish to knowledge just what the truth gratification in the g-spot tastes like, then you definitely do not have to skip earning the pink g-spot vibrator the next sex instrument to
    get in. In order to generate a mood the songs which may become your choice or in the event you both share a similar taste something that both of you enjoy sets a dark tone
    from the erotic massage. You’ll probably haven’t any
    shortage of volunteers when you reach a particular a higher level competency, but initially you might need
    an indulgent spouse, available siblings or parents — or why not be ready to try
    yourself.

  12. I do not even understand how I ended up right here, but I assumed this put up was good.
    I don’t recognise who you might be but certainly you’re going to a famous blogger should you aren’t already.

    Cheers!

  13. Somebody essentially help to make seriously posts I might state.
    This is the very first time I frequented your website page and up to now?
    I amazed with the analysis you made to create this
    actual submit amazing. Excellent task!

  14. Bet365 are a single of the couple of betting operators to have remained
    in the UK as a lot of of the other firms have moved to offshore areas with relaxed tax guidelines.

  15. Hi this is kinda of off topic but I was wanting to know
    if blogs use WYSIWYG editors or if you have to manually
    code with HTML. I’m starting a blog soon but have
    no coding knowledge so I wanted to get guidance from someone with experience.

    Any help would be enormously appreciated!

  16. Racebook- Should you take pleasure in wagering on horses, we’ve
    a full line up of tracks from everywhere in the world.

  17. We stumbled over here by a different page and
    thought I might check things out. I like what I see so now i’m following you.

    Look forward to exploring your web page repeatedly.

  18. This is the right web site for everyone who hopes to find out about this topic.

    You know so much its almost tough to argue with
    you (not that I really will need to…HaHa). You certainly put
    a brand new spin on a topic which has been written about for decades.
    Great stuff, just wonderful!

  19. Fantastic goods from you, man. I have remember your stuff prior to and you
    are simply extremely magnificent. I actually like what you have bought here, certainly like what you’re saying and the best
    way by which you say it. You make it entertaining and you still care for to stay it wise.
    I can’t wait to read much more from you. That is actually a terrific website.

  20. Hi there! This is myy first comment here so I just
    wanyed to give a quick shout out and tell you I genuinedly enjoy reading through your blog posts.

    Can you recommend any other blogs/websites/forums that
    deal with the same topics? Thanks a ton!

  21. A Pennsylvania lawmaker that had originally proposed legalizing the sites now needs
    to ban each day fantasy sports activities except their operated by the 12 casinos within the state.

  22. Pretty great post. I simply stumbled upon your weblog and
    wished to mention that I have really enjoyed surfing around your blog posts.
    After all I will be subscribing on your feed and I hope you write
    again soon!

Leave a Reply

Your email address will not be published. Required fields are marked *