Wpis z mikrobloga

Czytam sobie właśnie o programowaniu OOP (PHP) i istniejących tu zasadach (Single Responsibility Principle, MVC etc.) I mam kilka wątpliwości. Niestety w temacie wydaję się występować problem „ilu programistów tyle opinii”.

Przykład :

Klasa User
-login()
-logout()
-resetPass()
-createAcc()
-updatePass()

Klasa Article:
-show()
-update()
-delete()

Jedni twierdzą, że obie klasy łamią zasady SRP. Inni, że tylko USER. Kolejni, że jest ok tak jak jest. Ktoś inny napisał, że klasa USER powinna dziedziczyć interfejsy i napakował im tam chyba z 5 co w rezultacie i tak wygląda dokładnie tak jak na powyższym przykładzie (ale za to dostał cała masę plusów za odpowiedź – nie wiem, może dlatego, że wyglądała profesjonalnie).

Podobnie z MVC. Jedni piszą, że to kontroler wywołuje model i nic więcej (model sam generuje widok) inni, że kontroler odbiera dane od modelu i na tej podstawie generuje widok lub przełącza na inny kontroler. Ktoś inny napisał, że to widok powinien odpytywać model.

Pytanie zatem jak nie zwariować? Każdy bardziej „zaawansowany” temat który zgłębiam zwykle kończy się na forach swoistą świętą wojną. Chciałbym pisać kod który nie będzie powodował WTF! u innych programistów.

#programowanie #php
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Kalvot niestety nie. Od kilku dni przerzucam masę zachodnich blogów technicznych i postów na Stack Overflow i stwierdziłem, że zapytam na naszym podwórku bo już sam się gubię i nie wiem jak to powinno wyglądać.
  • Odpowiedz
@zxc1010101: wg. mnie rozwiazanie z deklaracja interfejsow najbardziej oddaje tutaj zasade Single Responsibility. W ten sposob klasa User sluzy jedynie do integracji metod operacji na Userach, interfejs z metoda login tylko jest od logowania, itd. W ten sposob osiagamy cel zdefiniowany przez Roberta C. Martina: "A class should have only one reason to change."
Caly sens tego podejscia polega by wyizolowac problem i ograniczyc ryzyko reakcji lancuchowej przy wprowadzaniu zmian.
  • Odpowiedz
@zxc1010101: więc otrzymasz kolejne opinie, które nie wiele pomogą :-P ja mam takie zdanie, że to wszystko zależy od kontekstu i nie wydaje mi się, że istnieje jedyna słuszna droga. Np. Te klasy które podałeś mogą być srp albo nie. Zależy to od tego jak napiszesz te metody. Zwykle te funkcje w modelu mają zmieniać tylko jego stan, a zalogowanie i wylogowanie to raczej działania na np. sesji więc raczej
  • Odpowiedz
@zxc1010101: Z programowaniem jak z religią.

Jeden rabin powie tak drugi rabin powie inaczej.

Jeżeli zaczynasz programownie, to polecam #rubyonrails i sam język #ruby który pozwoli Ci na szybką realizację projektu. Napisz na priv to mogę polecić jakiś materiał ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@Kalvot: @MatH:

Jeden rabin powie tak drugi rabin powie inaczej.

I to chyba najlepiej oddaje problem.

A co Ruby to miałem z nim kiedyś krótki romans - ale aktualna praca zmusiła mnie niestety do ogarnięcia php.
  • Odpowiedz
@zxc1010101: może dlatego programowanie jest sztuką, bo istnieje mnóstwo sposobów na realizację projektów, które będą dobre z różnych przyczyn :-P nie ma co się przejmować, trzeba programować.
  • Odpowiedz
Chciałbym pisać kod który nie będzie powodował WTF! u innych programistów.


@zxc1010101: Niemożliwe do realizacji. Programistę poznasz po tym ,że uważa własny kod za lepszy od kodu innych :) Jeszcze nie spotkałem programisty (a komercyjnie pracuje niemal dwie dekady) który patrząc w kod innego programisty który akurat nie stoi obok niego powiedziałby:

Ale zajebisty kod. Zobaczcie jak fajnie to
  • Odpowiedz
@zxc1010101 I tak na końcu kończy się tym aby napisać kod najszybciej jak się da, był testowany i tak żebyś ty I inni mogli go ogarnąć w środku nocy jakby była potrzeba, tym się wg mnie powinno kierować
  • Odpowiedz
@zxc1010101: Zdradzę Ci sekret - większość programistów nie stosuje poprawnie wzorców. Polecam samemu obadać temat i próbować go zrozumieć, źródła w necie w większości są śmieciowe.

Odpowiadając na to co tu dałeś:
Klasa User
  • Odpowiedz