Single responsibility principle rubrika: Návrh
Narazil jsem v jednom diskuzním fóru na problém, co je a co už není SRP. Na jedné straně byly názory, že třída by měla držet data nebo metody, ale ne obojí. To je podle mne porušením zapouzdření objektů a vlastně degradací celého OOP.
Můj názor je ten, že třída by měla obsahovat minimum instančních proměnných, ale měla by k nim mít všechny potřebné metody tak, aby instanční proměnné zůstaly privátní a přitom pokud možno nebyly potřebné gettery, settery ani predikáty.
Praktikuji to tak už nějakou dobu. Výsledkem jsou třídy, které mají obvykle 2-4 atributy a 2-6 metod. Jejich délka mi běžně vychází na 20-60 řádek, názvy proměnných a metod jsou zpravidla jednoslovní. Přesto si někteří troufají tvrdit, že porušuji SRP.
Jaký na to máte názor? Jak má podle vás vypadat třída splňující SRP?
Přístup, který jsi popsal, je podle mě „v duchu OOP“ a se SRP se nijak nevylučuje.
Rád bych v této záležitosti odkázal na jeden postarší názor od René Steina, který považuji za velmi dobrý: http://blog.renestein.net/CommentView,guid,59132463-8265-453d-b94a-d44bc...
Komentáře
- Kit : Díky za zajímavý odkaz. Princip “tell, don't ask”, uvedený na konci, je přesně cestou, kterou jsem se vydal. — 28.12.2014
Pro plný přístup na Devel.cz se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře