Я читаю Чистый код от дяди Боба. Поскольку я не являюсь носителем английского языка, я не мог понять следующее утверждение:
Классы и объекты должны иметь существительное или словосочетание имена , как
Customer
,WikiPage
,Account
иAddressParser
. Избегайте таких слов , какManager
,Processor
,Data
илиInfo
во имя класса. Имя класса не должно быть глаголом.
Как я не знаю, ни один из Manager
, Processor
, Data
, и Info
это глагол, не так ли? Какой факт он хочет подчеркнуть?
coding-style
terminology
code-quality
naming
mmdemirbas
источник
источник
Ответы:
Три пункта являются отдельными:
Имена классов должны быть существительными или именными фразами . Это означает, что имя класса должно быть чем-то, что будет предметом глагола. В случае объектно-ориентированного проектирования методы - это глаголы, которые имеют место в том, что представляет собой класс.
Некоторые слова следует избегать.
Manager
указывает на возможный класс бога .Info
иData
может указывать на фиктивный контейнер данных. Такие слова могут указывать на плохое моделирование проблемного пространства.Глаголы никогда не должны быть именами классов. Смотрите первый пункт - классы моделируют вещи, методы моделируют действия.
источник
Он пытается провести различие между вещами (существительными) и действиями (глаголами). В традиционном объектно-ориентированном дизайне мы рассматриваем классы как вещи, а их методы - как действия, которые эти вещи могут выполнять. Для того, чтобы управлять , чтобы заботиться о или координировать, в то время как менеджер это человек или вещь , которая управляет.
Вступительные книги обычно сводят это к самым простым и очевидным терминам, таким как класс с именем Dog , с методами Bark и Bite . В классах реального мира различие часто немного более тонкое, но оно все еще там. Я полагаю, что смысл, который делает дядя Боб, заключается в том, что хотя менеджер является существительным, но он уделяет большое внимание тому, что делает менеджер, а не тому, чем он является - это слишком расплывчатое слово для описания того, что именно быть управляемым или как.
источник
Account
есть объект,balance
поле иtransfer
метод. Но правильный дизайн будет таким:Transfer
это объект,account
поле иbalance
метод. Вот как на самом деле внедряются банковские системы и как на самом деле работали банковские системы до компьютеров.