Co wujek Bob rozumie przez „nazwy wyrażeń rzeczownikowych”?

14

Czytam Clean Code autorstwa Uncle Bob. Ponieważ nie jestem językiem ojczystym-angielskim, nie mogłem zrozumieć następującego oświadczenia:

Klasy i obiekty powinny mieć rzeczownik lub rzeczownik frazy nazwiska jak Customer, WikiPage, Account, i AddressParser. Należy unikać takich słów jak Manager, Processor, Data, lub Infow imieniu klasy. Nazwa klasy nie powinna być czasownikiem.

Z tego co wiem, żaden z Manager, Processor, Datai Infoto czasownik, prawda? Jaki jest faktyczny punkt, który chce podkreślić?

mmdemirbas
źródło
być może wujek Bob przyjmuje ODPOWIEDNIE myślenie wychwalając zalety zasobów jako obiektów.
rwong

Odpowiedzi:

21

Trzy punkty są osobne:

  • Nazwy klas powinny być rzeczownikami lub wyrażeniami rzeczownikowymi . Oznacza to, że nazwa klasy powinna być czymś, co byłoby przedmiotem czasownika. W przypadku projektowania obiektowego metodami byłyby czasowniki występujące na rzeczy, której klasa jest reprezentacją.

  • Niektórych słów należy unikać. Managerwskazuje na możliwą klasę boga . Infoi Datamoże wskazywać fikcyjny kontener danych. Takie słowa mogą wskazywać na złe modelowanie przestrzeni problemowej.

  • Czasowniki nigdy nie powinny być nazwami klas. Zobacz pierwszy punkt - klasy modelują rzeczy, metody modelują działania.

Thomas Owens
źródło
1
Takie słowa mogą wskazywać na złe modelowanie przestrzeni problemowej. - Można by pomyśleć, że przestrzeń problemowa jest źle wymodelowana lub nie, niezależnie od wybranych nazw. Dobre imię nie pomaga złemu projektowi; a dobry projekt jest tylko w niewielkim stopniu dotknięty złym nazwiskiem.
Ingo
I możesz pójść o krok niżej, rozważając, w jaki sposób budujesz swoją klasę i jak współdziała ona ze światem zewnętrznym - właściwości klasy byłyby na ogół rzeczownikami, podczas gdy metodami klasowymi byłyby na ogół czasowniki
PeteH
Jeśli twój projekt ma klasę, którą powinieneś nazwać „Menedżerem”, „Informacją” lub „Danymi”, prawdopodobnie ma tuzin takich klas, co oznacza, że ​​nie używałbyś tych nazw. Będziesz mieć ThisManager i ThatManager i AnotherManger i tak dalej.
gnasher729,
Mówi, że czasowniki nigdy nie powinny występować w nazwach klas, ale właśnie ponownie czytałem Dodawanie znaczącego kontekstu, aw swoim przykładzie na stronie 29 nazywa klasę GuessStatisticMessage. Teraz jestem zdezorientowany tą zasadą, ponieważ interpretuję jego użycie Guess jako czasownika, a nie rzeczownika. dictionary.com/browse/guess?s=t
Devin Gleason Lambert
2
@DevinGleasonLambert Ale to nie zgadnij. To wiadomość statystyczna typu „zgadnij”. Wiadomość jest rzeczownikiem. Odgadnij statystyki po prostu opisuje rodzaj wiadomości, którą ona jest - taka, która przekazuje informacje o statystykach zgadywania.
Thomas Owens
7

Próbuje rozróżnić rzeczy (rzeczowniki) i działania (czasowniki). W tradycyjnym projektowaniu obiektowym myślimy o klasach jako przedmiotach, a ich metodach jako działaniach, które te rzeczy mogą wykonywać. Aby zarządzać ma zająć lub koordynować, a kierownik jest osobą lub rzeczą, którą zarządza.

Książki wprowadzające zwykle sprowadzają to do najprostszych i najbardziej oczywistych możliwych terminów, takich jak klasa o nazwie Dog , z metodami Bark and Bite . W klasach świata rzeczywistego rozróżnienie jest często nieco bardziej subtelne, ale nadal istnieje. Uważam jednak, że wujek Bob ma na myśli to, że chociaż menedżer jest rzeczownikiem, to jednak przywiązuje dużą wagę do tego, co robi menedżer, a nie do tego, co to jest - to zbyt niejasne słowo, by opisać dokładnie, co jest zarządzany lub jak.

pswg
źródło
5
Niestety tego rodzaju myślenie może prowadzić do niewłaściwych projektów. Jednym z najlepszych przykładów jest klasyczny przykład konta bankowego. W prawie wszystkich podręcznikach OO Accountjest przedmiotem, balancejest polem i transferjest metodą. Ale poprawny projekt brzmiałby: Transferjest przedmiotem, accountjest polem i balancejest metodą. Tak właśnie wdrażane są systemy bankowe i jak działała bankowość przed komputerami.
Jörg W Mittag
@ JörgWMittag: ta przestroga jest warta opublikowania jako odpowiedź; że są to ogólne wytyczne i mogą w niektórych rzadkich przypadkach prowadzić do złego rozkładu.
smci