- PVSM.RU - https://www.pvsm.ru -
Итак, моя последняя запись: стартап-ловушка [1] (здесь её перевод [2] — прим. переводчика) наделала много шуму. Среди людей, выражающих согласие и поддержку, нашлась и группа людей, которая была категорически не согласна. Я не буду здесь резюмировать все разногласия, ибо в этом месяце я уже исчерпал свой лимит ругательных слов. Но одним альтернативным мнением я проникся и считаю нужным его обсудить.
Речь о старом конфликте «прагматизм против догматизма». Недовольство заключалось главным образом в том, что я проявил себя слишком догматичным. Альтернативное мнение заключается в том, что в одних случаях применение TDD может быть оправдано, а в других TDD может вылиться в слишком высокие затраты. Так что вы должны быть прагматиком и делать выбор с умом.
На первый взгляд, эта идея звучит совершенно обоснованно. В конце концов, прагматизм это же хорошо, не так ли? Предположим, что вы знали бы заранее, что, применяя TDD, вы не уложитесь в срок, и, что, если бы не применяли, то уложились бы, вы бы не стали применять TDD, верно?
Верно. Без вопросов. И, действительно, иногда так бывает, что такой путь является правильным. Цель этого поста в том, чтобы пояснить то, когда же, по моему мнению, применение TDD может быть слишком затратным.
Но перед тем как я начну, я хотел бы высказать кое-какое соображение. TDD – это дисциплина для программистов, такая же как ведение бухгалтерии по методу двойной записи для бухгалтеров, или процедура стерилизации инструментов для хирургов. Бывают ли случаи, когда бухгалтеры не применяют метод двойной записи? Бывают ли случаи, когда хирурги не стерилизуют инструменты?
Ответ – да, в обоих случаях. Я сомневаюсь даже в том, что бухгалтеры применяют метод двойной записи при сведении баланса своих личных чековых книжек, или когда сверяют итоговую сумму по счёту в ресторане. Я мог бы быть признан неправым насчёт первого утверждения, в конце концов, я сам применял метод двойной записи годами при сведении баланса моей чековой книжки. Но я постепенно понял, что затрачиваемые усилия не покрывают возможные риски. Что касается последнего примера, то я думаю, все согласятся, что для проверки счёта в ресторане, метод двойной записи – это явный перебор.
Теперь что касается хирургов и процедуры стерилизации: пару лет назад мне удаляли липому с ноги. Моя жена наблюдала за этой процедурой. Операция была проведена под местным наркозом в кабинете у врача. Я слышал, что жена спросила врача о том, почему он не провёл процедуру стерилизации в процессе подготовке к операции. Он ответил, что для такой простой операции достаточно «процедуры очистки». Мы с женой удовлетворились этим ответом, и врач провел операцию.
Спустя пару дней, разрез воспалился и начал болеть. В один из швов попала инфекция и врачам пришлось заново сделать разрез и всё там почистить. Я не знаю, была ли причиной «процедура очистки», но с тех пор я настаиваю на том, чтобы лечащий меня врач, проводил процедуру стерилизации, а не «процедуру очистки».
Однако, утверждение остаётся верным. Бывают случаи, когда TDD слишком затратна и следует применять более лёгкие дисциплины. Я надеюсь, что моя история убедила вас в том, что такие случаи крайне редки и, что мем о прагматизме не должен стать помехой для применения ваших дисциплин просто потому что они кажутся неподходящими.
Итак, когда я не применяю TDD?
Этот список не является полным. Я уверен, что ещё задумаюсь в другой раз над тем почему я иногда не пишу тесты, но суть приведённого списка должна быть ясна. Прагматизм вступает в силу, когда практикуешь TDD, это всё не догма.
Однако, я уважаю догму. Для этого есть причина. Прагматизм иногда берёт верх, но я не буду писать какую-либо значимую часть продакшн кода без прикладывания всех возможных усилий, для того чтобы применить TDD.
Автор: EngineerSpock
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/30209
Ссылки в тексте:
[1] стартап-ловушка: http://blog.8thlight.com/uncle-bob/2013/03/05/TheStartUpTrap.html
[2] здесь её перевод : http://habrahabr.ru/post/171883/
[3] Источник: http://habrahabr.ru/post/173961/
Нажмите здесь для печати.