Książka Fowlera Refactoring wymienia "Klasa danych" jako zapach kodu. Jednak, gdy jednostka testuje metodę, przekazując obiekty wartości, np. obiekty transferu danych, sprawiają, że testowanie jest znacznie łatwiejsze niż próba ustawienia lub zbadania stanu wewnątrz klasy.Czy "Klasa danych" naprawdę jest zapachem kodu?
Uderza mnie, że metodologia Test Driven Development opiera się na założeniu, że łatwe do napisania testy wskazują, że interfejs jest czysty, a metoda jest spójna. Metody czysto idepcyjne są najłatwiejsze do przetestowania i najłatwiejsze do ponownego wykorzystania. Dlaczego więc klasa danych jest zła? Zalecaną poprawką jest przeniesienie zachowania do klasy danych, ale dlaczego obiekt wartości wymaga zachowania?
Co zrobić, jeśli mój model domeny nie jest wyłącznie moją domeną? Rozumiem przez to, że muszę pracować z jednostkami z korporacyjnego modelu danych, pobranymi z bazy danych. Czy klasa danych reprezentująca jednostkę nie powinna mieć własnego zachowania, zamiast delegować tę odpowiedzialność na usługi obiektów, które mu dostarczam? –
Odpowiedź jest nieco długa, więc zredagowałem odpowiedź. Doskonałe pytanie. – aquaraga