Wpis z mikrobloga

Mireczki, natknąłem się kiedyś na stronę, na której autor przedstawiał bardzo rygorystyczne zasady programowania obiektowego. Coś w stylu: metody nie mogą mieć więcej niż 10 linii, klasy mają mieć maksymalnie 5 memberów i 10 metod itp. To było chyba coś całkiem znanego, bo pamiętam, że wiele osób komentowało ten zbiór zasad jako fajne ćwiczenie. Jest ktoś w stanie poratować linkiem?

#programowanie #oop
  • 6
metody nie mogą mieć więcej niż 10 linii, klasy mają mieć maksymalnie 5 memberów i 10 metod itp.


@informatyk: Bzdury. Nie liczba linii ma znaczenie, tylko trzymanie się reguły jednej odpowiedzialności. Owszem, jak kod jest sporawy, to jest szansa, że narusza też SRP, ale takie reguły „techniczne” to zły sposób myślenia o problemie.

To Cię realnie interesuje: https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
@MQs: wielkie dzięki, tego właśnie szukałem!

@MacDada: kolego, czytaj proszę ze zrozumieniem i nie zarzucaj mi pisania bzdur. Nie stwierdziłem nigdzie, że w OOP istotne jest trzymanie się zasady nieprzekraczania N linii, tylko że szukam pewnego konkretnego zbioru reguł, który, z tego co pamiętałem, skupiał się właśnie na kwestiach technicznych. Gdyby chodziło mi o SOLID, to nie pytałbym o to na Wykopie, bo nie programuję od wczoraj tylko od ponad
@MacDada: ja myślę, że taka "obiektowa kalistenika" to właśnie fajne ćwiczenie, w które po prostu można się czasami pobawić. Wiadomo, że tak naprawdę nikt nie pisze oprogramowania, rygorystycznie trzymając się tego, żeby robić maksymalnie jedno wcięcie w każdej metodzie, nie stawiać nie więcej niż jedną kropkę w linii i tworzyć klasy z max. 50 liniami, ale nie osądzałbym, że organizowanie sobie ćwiczeń opartych na takich technicznych zasadach jest z gruntu złe
@informatyk: 100% zgody. Też stosuję takie podejście. Moja krytyka wynikła ze słowa „zasada” w ramach projektowania obiektowego.

Bo czy jedno wcięcie jest dobre tylko dla OOP? Kupę kodu produkuję proceduralnego, a jednak zawsze staram się zastosować tę regułę. IMHO jest ona uniwersalna.

Z kolei jak myślę o OOP, to raczej mam na myśli właśnie SOLID, Law of Demeter czy DDD.

BTW, od jakiegoś czasu (2 lata z przerwami), odnośnie nowego kodu,