вторник, апреля 28, 2009

Про код

Прочитал я какое то время назад пост Романа Елизарова. Я очень уважаю этого человека, мне безумно понравился его доклад два года назад на STD, но с этим высказыванием я несогласен:
Из двух программ решающих одну и ту же задачу лучше та, которая короче. Хороший рефакторинг уменьшает количество кода в проекте. Код имеет наилучший дизайн, если для внесения в него новой функциональности нужно произвести изменения в наименьшем количестве мест кода.
Поясню мнение самым очевидным контр аргументом против первой части этой фразы. В моем личном опыте была следующая ситуация. Имелась программа на Perl написанная методом в одну строку. Внесение изменений в эту программу и последующая ее отладка, после увольнения сотрудника ее написавшего, не представляется возможным. В пику была написана программа на Java 22 класса, ну очень много строк + JavaDoc. В результате продукт стал управляемым, поддерживаемым и работает уже несколько лет (было 2 рефакторинга двумя разными людьми).
Также следует поспорить относительно того, что хороший рефакторинг уменьшает количество кода в проекте. Мне кажется, рефакторинг обязан сделать код правильным - то есть читабельным (а это далеко не компактный) и безопасным (что тоже добавляет значительный вес к объему кода).
Вот последнее утверждение абсолютна истинно +) и с ним я согласен.