Интересно, откуда пошла поговорка? Но речь не об этом.
Если жить в соответствии с дао, я имею ввиду TDD и рефакторинг, то методы надо делать меньше. Как сказал Роберт Мартин - 'нет, методы надо делать еще меньше'. И классы в соответствии с SRP надо делать меньше.
Я никогда не встречал проектов, которые бы разрабатывались в полном соответствии с этой концепцией, но чувствую проблемы. Проблемы заключаются в том, что количество таких объектов может уйти далеко за рамки 7+-2, которые человек в состоянии эффективно анализировать.
Разрастание количества классов может привести к плохо обозримой кодовой базе, в следствии чего увеличится дублирование кода. Что же делать?
Очень просто - необходимо распространять принцип 7+-2 дальше. не более 7+-2 классов в модуле, не более 7+-2 модулей в компоненте, не более 7+-2 компонентов в приложении. Это даст хорошую локализацию функционала, но опять таки может привести к дублированию, потому что усложняется расшаривание общего кода. Что же делать?
Общий код (тоже 7+-2 :) ) нужно выносить в библиотеки...
И осталось только все это аккуратно и гармонично расположить по каталогам проекта. В древовидном виде, конечно.
Собственно к цифре 7+-2 надо относится прагматично. Не стоит на каждый чих вести отсчет. Достаточно подсчитывать определяющие поведение классы, методы или что похуже. Утилитарные однострочники не достойны считаться полноценными классами.
Очень кстати удобно сделано в linux kernel - каждый подкаталог в нем сворачивается в объектный бандл, один объектный файл, который объединяет в себе все скомпилированное содержимое каталога.
А сколько классов/файлов в одном каталоге живет у вас?
Привет, мир!
4 года назад
2 коммент.:
Я пишу на Perl и иногда на Haskell. У нас все намного проще - http://www.modernperlbooks.com/mt/2011/08/10-years-later-only-250-sloc.html#comment-979
В любом языке присутствуют некоторые единицы трансляции/интерпретации.
Если в один файл напихать много функций - это тоже антипаттерн. :)
ИМХО 300-500 строк нормально, больше уже плохо.
Отправить комментарий