Интересно (и ободряюще) было узнать, насколько этот подход совпадал с идеями, изложенным Джеффри Рихтером в его презентации на Devscovery:
- When designing a type, you imagine how the type will be used and implement an interface accordingly
- Each member's name is a verb
Methods: "Transfer", "Add", "Lookup", "Enter", etc.
Constructors: "Create" and object
Properties: "Get", "Set"
Events: "Add", "Remove"
- If method can't do what it says it will do (for any reason), throw an exception
- Good mind set: An exception indicates a member-level failure, not an application-level "bug"!
A designer can't imagine all the ways their type will be used
ONLY the caller can know if an attempted usage is a "bug"
Представив слайд с этими принципами, Рихтер строго посмотрел в зал и произнес: "Я знаю, что вокруг этого ведутся нескончаемые споры и что смогу убедить далеко не всех. Но я не собираюсь занимать ваше время долгим обсуждением этой темы. Выбор ваш. Но я знаю, что прав."