Показать сообщение отдельно
Старый 08.05.2011, 02:55
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 23  
Ответить с цитированием
Crazy
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Такие люди хорошо лечатся написанием юнит тестов.
К сожалению, это помогает не всегда. Качественные юнит-тесты встречаются реже, чем многие думают. Думаю, не ошибусь, если предположу, что три четверти здешнего контингента их вообще не пишет.

Где-то с год назад мне довелось поработать с кодом большого сторонника модульных тестов. Покрытие -- свыше 95%. При этом "работа над ошибками" показала, что в оставшиеся 5% аккуратно вошли разные аномальные состояния. Тесты -- работают. А если вдруг из стороннего модуля исключение прилетит -- вся система в алмазный дым обращается. А юнит-тестов при этом -- процентов на 20 больше, чем "полезного" кода.

Цитата:
для написания юнит теста очень часто нужно наследоваться от тестируемого класса
Поступаю так временами. Во всех случаях -- в лично моей практике -- это оказывается следствием огрехов проектирования.

Цитата:
Есть еще такой момент - я, (все еще) почему-то предполагаю, что человека, который будет использовать мой код возможно заинтересует реализация, и при наследовании он не будет делать каких-то явных глупостей. Увы, так не работает. И если необходимо получить результат не взирая на "идиотов" сотрудников, которым жалко лишний раз посмотреть чужой исходник... да, иногда наверное не помешает и final...
Здесь, как мне кажется, спутано теплое с мягким. Если некто наследует от чужого класса и тщательно изучает при этом его код -- это никак не страхует от правок, позднее внесенных автором родительского класса. А автор родительского класса, если специально не предназначал свой класс для наследования, на практике редко находит время для инспекции всех внезапных потомков его класса. И идиоты здесь совершенно параллельны.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++