Re[5]: Exceptions в сеттерах
От: mazurkin http://mazurkin.info
Дата: 01.12.08 11:22
Оценка:
Mike Chaliy wrote:

> А еще вопрос. Assert.notNull(obj) попадает в релизные билды?


Вообще вопрос совершенно неоднозначный и весьма интересный, по крайней
мере потому, что в свое время много над ним думал

Если мы обратимся к истории и вспомним MSVC+/Borland Delphi и иже с
ними, то увидим, что там существует четкое разделение release и debug
билдов. И в debug билдах ассерты действительно отключаются — в C++ через
макросы, в Delphi — вроде через сам язык.

Меня все время это очень удивляло. Я нахожу в этом некое недальновидное
лицемерие.

То есть мы поставляем клиенту продукт с отключенной системой внутренних
проверок в надежде на то, что если ошибки и возникнут, то в отсутствие
ассертов у нас всплывет не четкий и понятный баннер с информацией о том,
что мы облажались и где допустили такую ситуацию; а абстрактное окошко
об ошибке в модуле kerner32.dll и можно будет все списать на "глючную
винду", а то глядишь и все само собой рассосется. И я бы понял, если бы
отключение ассертов как то влияло на производительность, но ведь
банальные проверки на фоне других операций никаких задержек не вносят.

Посему я сторонник жесткой ответственности — внутренние проверки не
отрубать вообще никогда, кроме тех, что реально влияют на
производительность.
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.