Wpis z mikrobloga

Czy wg. was dobrą praktyką jest stworzenie dwóch nowych klas z czego jedna ma tylko metodę create i nazywa się ABC, a w metodzie create zwraca nowy obiekt klasy DEF.
Klasa DEF ma konstruktor który przypisuje dwa atrybuty, oraz dwa gettery dla tych atrybutów i to tyle.

I stworzenie tych dwóch klas tylko po to aby w jednym miejscu użyć
$this->costam = new ABC()

Właśnie czytam taki kod i zastanawiam się na ile to jest przerost formy ponad treścią... Ja wiem "czysty kod" i te sprawy ale bez przesady. Gdybyście widzieli taki kod to mielibyście pretensje do autora czy raczej się nie czepiać? Wiem, że ja bym tego tak nie rozbił.

#programowanie #php
  • 7
  • Odpowiedz
@Dyktus
DEF to value object, który jest immutable, bardzo dobra rzecz.
ABC to rozumiem factory class. Nie przeszkadza, że ma jedną metodę. Jest przeważnie ok.

Generalnie normalne rozwiązanie. Użycie w jednym miejscu niczego nie zmienia moim zdaniem.
  • Odpowiedz
@Dyktus jeśli DEF jest bardzo dużą klasą to ma to sens. Wtedy fabryka ABC zwraca wskaźnik na IDEF po którym dziedziczy DEF. W ten sposób ukrywasz implementację i ilość zależności.
  • Odpowiedz
@Dyktus: Jeśli te dwa atrybuty podajesz przez create() to raczej bez sensu. Ogólnie trudno przesądzić, ale inne implementacje (jeśli się pojawią) bez problemu wprowadzisz nadpisując wewnętrzną metodę (factory method).
  • Odpowiedz