Levitra online Vicodin Online Propecia online
author: böhringer friedrich, http://commons.wikimedia.org/wiki/File:Seefrosch01.JPG

Если тебе сложно написать тест, то это не проблема тест-фреймворка, моков и т.п. Сложный тест - это признак того, что в дизайне системы есть проблемы. Тесты являются конкретной практикой, которая позволяет делать дизайн лучше даже в тех случаях, когда ты не знаешь, что такое паттерны проектирования.

Бывают моменты, когда приходится прилагать много усилий для написания теста очередной функции. Ты начинаешь писать тест и его код разрастается до невиданных размеров или ты стопоришься на том, что не знаешь, как “замочить” или “застабить” функцию/класс. И тут начинается колдовство и просыпается изобретательность, которые приводят к тому, что коллега, просмотрев тест, с трудом понимает, что в нем происходит.

Если у тебя сейчас так, то тебе нужно остановиться. Убери руки с клавиатуры и взгляни на свою систему. Возможно тебе стоит заменить наследование композицией? Возможно твоя функция берет на себя слишком много обязанностей? А может у тебя слишком много зависимостей? Подумай, что мешает тебе написать простой тест?

Как в истории про лягушку и котел: если лягушку борсить в котел с кипящей водой, то она сразу выпрыгнет от туда. Если в котле будет холодная вода и он будет нагреваться постепенно, то лягушка сварится. Тесты позволяют вам почувствовать момент, когда дизайн системы начинает усложняться и когда следует выпрыгивать из котла ;)

Об авторе

Павел Габриель
Павел Габриель

Agile-практик, руководитель проектов, программист-прагматик


Добавить комментарий

Take a moment to comment and tell us what you think. Some basic HTML is allowed for formatting.

You must be logged in to post a comment. Click here to login.

RSS комментариев Комментарии:

[...] Индикатор плохого дизайна — небольшая заметка о том, как использование тестов заставляет улучшать архитектуру недостаточно гибко-спроектированых систем. [...]

+1.
Все верно.

Я пишу в основном на Питоне.
И, поверьте, умею легко и непринужденно сделать stub/mock на что угодно, благо язык это позволяет.

Но если приходится в тестах напрягать мозг - это именно признак плохого дизайна.

Если имеем legacy code - стоит подумать о цене приведения его в божеский вид.

Если свежесозданный код требует танцев с бубном - нужно его переработать.

Не нашли ответа в комментариях? Воспользуйтесь листом рассылки сообщества Agile.by. Подробнее о листе рассылки вы можете прочитать здесь. Или просто послать свое сообщение на адрес: agile-belarus@googlegroups.com.


Наши партнеры и проекты: