Вагиф Абилов (object) wrote,
Вагиф Абилов
object

Exception handling revisited

Сегодня, переписав все наши программы с заменой кодов ошибки на исключения (exceptions), могу констатировать, что решение, обсуждавшееся несколько месяцев назад, было верным. Никаких кодов ошибок, только исключения!

Интересно (и ободряюще) было узнать, насколько этот подход совпадал с идеями, изложенным Джеффри Рихтером в его презентации на 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"


Представив слайд с этими принципами, Рихтер строго посмотрел в зал и произнес: "Я знаю, что вокруг этого ведутся нескончаемые споры и что смогу убедить далеко не всех. Но я не собираюсь занимать ваше время долгим обсуждением этой темы. Выбор ваш. Но я знаю, что прав."
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 46 comments