http://runningmaster.wordpress.com/

7 ПРИЗНАКОВ ПЛОХОГО ПРОЕКТА

Posted in Development by runningmaster on Среда, Март 19, 2008

С признаками плохого проекта по Мартину из его книги “Быстрая разработка программ” встречался каждый разработчик, но не каждый может действительно в должной мере противостоять этой зловещей семерке. Более того, даже сам Мартин не в силах на все сто противостоять этой семикратной коррозии, которая пожирает строку исходного кода за строкой, проект за проектом. К сожалению, это вопрос лишь времени.

Вот, что неизбежно в той или иной степени ожидает проект на оси времени (выделено автором):

  • Закрепощенность: система с трудом поддается изменениям, поскольку любое минимальное изменение вызывает эффект “снежного кома”, затрагивающего другие компоненты системы.
  • Неустойчивость: в результате осуществляемых изменений система разрушается в тех местах, которые не имеют прямого отношения к непосредственно изменяемому компоненту.
  • Неподвижность: достаточно трудно разделить систему на компоненты, которые могли бы повтроно использоваться в других системах.
  • Вязкость: сделать что-то правильно намного сложнее, чем выполнить какие-либо некорректные действия.
  • Неоправданная сложность: проект включает инфраструктуру, применение которой не влечет непосредственной выгоды.
  • Неоправданные повторения: проект содержит повторяющиеся стуктуры, которые могут унифицироваться с применением простой абстракции.
  • Неопределенность: проект трудно читать и понимать, недостаточно четко выражено содержимое проекта.

Но у меня есть и хорошие новости. Мы можем упешно минимизировать вышеуказанные признаки и их последствия. Все в наших руках и все зависит от нас, ибо кадры решают все, а не Мартины со своими признаками. Для этого лишь надо заставлять себя постоянно аудировать исходный код проекта по этим признакам. Днем и ночью. При малейшем сомнении стараться выправить ситуацию.

Плохое имя у функции – вот так будет лучше. Криво написан цикл – уже переписал. Неправильно отформатирован текст процедуры – исправил. Неудачный заголовок – новый лучше. Пакет зависит от другого – подумал как надо и устранил зависимость. Хотелось бы использовать вот такой вот компонент, но он в библиотеке, в которой три сотни компонентов – отказался от его использования вообще! И так далее…

Но самое главное на мой взгляд – априори думать о предстоящих в проекте изменениях, а не о требуемой функциональности на текущий момент.

Ссылки:

  1. Р.Мартин “Быстрая разработка программ”