Temat: model, helper czy klasa?
Jarek Żeliński:
...
nie kupuje tego :), wolę "projektowanie poprzez odpowiedzialność", taki kod "do czegoś służy"....
Zgadzam się z Tobą Jarku, że projektowanie poprzez odpowiedzialność jest najlepszym punktem wyjścia, jednakże...
Każda klasa powinna mieć swoją zasadność istnienia i pełnić jakąś rolę w SI, to prawda. Często jednak idziemy na pewne kompromisy: świat nie jest idealny, doba ma tylko 24 godziny a entropia ma tendencje do zwiększania się :)
Wyobraźmy sobie np. ogromną bibliotekę utworów muzycznych, które mają nazwy plików utworzone zgodnie z jakimś kluczem i kilku (kilkunastu) programistów rozproszonych po kraju (czy świecie). Wszystko kręci się w MVC, a SI ma frontend, backend i zapewne kilka innych aplikacji pod maską.
Z jednej strony najlepiej stworzyć klasę "Plik" czy "Utwór Muzyczny", która między innymi odpowiadałaby za weryfikację/tworzenie właściwej nazwy pliku. Ale jest kilka problemów: w różnych częściach aplikacji z czasem mogą powstać "bliźniacze" klasy o rożnych odpowiedzialnościach, ale z niewielką częścią wspólną --- niech to będzie nazwa pliku. Jedne tylko odczytują, inne konwertują inne dystrybuują. Z czasem algorytm tworzenia nazw może ulec zmianie. Programiści mogą podlegać rotacji itp.
Jest też inny problem. Tworząc nieco opasłą klasę i powołując setki dynamicznych obiektów do życia tylko po to by pogenerować właściwe nazwy plików ryzykujemy zarżnięciem aplikacji w godzinach szczytu.
Wszystko to może być przesłanką do zastosowania jednak helpera "użyczającego" właściwego algorytmu generowania/weryfikacji nazwy pliku na różnych poziomach SI.