Здравствуйте, Сергей Губанов, Вы писали:
СГ>А на каком языке?
на самом деле язык не важен, если он высокоуровневый...
СГ>Вот одна строка на одном языке: IF a THEN b ELSIF c THEN d ELSE e END СГ>а вот пятнадцать строк на другом: СГ>
Здравствуйте, Pyro Sun, Вы писали:
PS>Кто как считает? Какой размер класса в строках оптимален для понимания того что там происходит?
PS>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек. PS>Да и 1000 это пожалуй великовато.
Размер в строках — это плохой критерий в этом случае.
Надо смотреть на функциональность.
Размер в строках для класса для меня лично никогда не было большой проблемой.
А вот неудачные названия для методов, дублирование функциональности (copy/paste)
и прочие проблемы плохого дизайна класса — это то, что реально мешает пониманию.
Здравствуйте, Pyro Sun, Вы писали:
PS>Кто как считает? Какой размер класса в строках оптимален для понимания того что там происходит?
PS>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек. PS>Да и 1000 это пожалуй великовато.
Как говорят классики, класс-отражение некоторой сущности действительности (хотя действительность вообще говоря сама может быть некоторой абстракцией в другой более "реальной" действительности). Тогда получается (если взять нормаьный, непатологический код), что в среднем одна строка должна описывать одно свойство этой сущности или какое-то ее (сущности) поведение. Даже если какой-то объект имеет столько свойств, то это означает только, что такой объект-некая сложная система, и представить его нужно в виде агрегации его подсистем (подобъектов), например, аэродром, взлетные полосы.
Такие вещи прекрасно описаны в книге Г. Буча (название сейчас точно не помню, по-моему "Объекто-ориентированный анализ...").
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Pyro Sun, Вы писали:
PS>>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек.
СГ>А на каком языке?
СГ>Вот одна строка на одном языке: IF a THEN b ELSIF c THEN d ELSE e END
Зачот
Здравствуйте, Pyro Sun, Вы писали:
PS>Кто как считает? Какой размер класса в строках оптимален для понимания того что там происходит?
PS>Из своих наблюдений пришел к выводу что класс должен быть меньше 1000 строчек. PS>Да и 1000 это пожалуй великовато.
Я думаю, что важнее не общий размер класса, а размер его методов и количество этих методов. Так, класс из одного метода на 500 строчек воспринимается хуже, чем класс из 20 методов по 25 строчек в каждом. Ну и, конечно, количество единиц функциональности на строчку кода таки зависит от языка, как бы ни пинали Сергея Губанова
(филосовское отступление) Вообще, наверное, нужно различать "оптимальное количество строчек кода" и "оптимальное количество функциональности". Первый параметр имеет значение на маленьких объёмах кода — когда можно охватить весь код одним взглядом. Второй же параметр важен при понимании функциональности класса в целом, т.е. при бОльших объёмах кода. На близкую тему была довольно интересная дискуссия — http://sobaker.livejournal.com/231436.html .
Здравствуйте, FoolS.Top, Вы писали:
FT>Как говорят классики, класс-отражение некоторой сущности действительности (хотя действительность вообще говоря сама может быть некоторой абстракцией в другой более "реальной" действительности). Тогда получается (если взять нормаьный, непатологический код), что в среднем одна строка должна описывать одно свойство этой сущности или какое-то ее (сущности) поведение. Даже если какой-то объект имеет столько свойств, то это означает только, что такой объект-некая сложная система, и представить его нужно в виде агрегации его подсистем (подобъектов), например, аэродром, взлетные полосы. FT>Такие вещи прекрасно описаны в книге Г. Буча (название сейчас точно не помню, по-моему "Объекто-ориентированный анализ...").
Интересно отражением какой "реальной сущьности"? являеться класс шаблона Facade, который представляет собой надстройку над интерфейсом 5 или более классов... А что класс отражает некоторую сушьность действительности это фигня, зачастую это не так, как в выше привеленном примере.
Здравствуйте, Eugene Beschastnov, Вы писали:
EB>(филосовское отступление) Вообще, наверное, нужно различать "оптимальное количество строчек кода" и "оптимальное количество функциональности". Первый параметр имеет значение на маленьких объёмах кода — когда можно охватить весь код одним взглядом. Второй же параметр важен при понимании функциональности класса в целом, т.е. при бОльших объёмах кода. На близкую тему была довольно интересная дискуссия — http://sobaker.livejournal.com/231436.html.
Спасибо за ссылку почитал... Как видно собрались там любители смолтолка... Я тоже себя к ним отношу...
но чтобы на нем какие то проекты писать... бр....
Я же иммел ввиду более традиционные языки C++, С#, ObjectPascal.
Теперь насчет оптимального количества строчек кода...
Понятно что если в классе реализован сложный алгоритм, к примеру дискретное преобразование Фурье,
или в классе реализвано простое 'линейное' действие, вроде сериализации обьекта в базу данных.
То это две большие разницы с точки зрения понимания функционирования данного кода.
Я же иммел ввиду код одинаковой сложности...
Здравствуйте, bkat, Вы писали:
B>Размер в строках для класса для меня лично никогда не было большой проблемой.
А если класс являеться Facade для 5 и более классов... И так может получится что этот Facade
все растет и растет и вырастает дето до 3000-5000 строчек. Обозревать это все нехватает никакой возможности.
Вот такие классы нада резать на более мелкие. Отсюда и делаю вывод что классы больше 1000 строк это зло...
B>А вот неудачные названия для методов, дублирование функциональности (copy/paste)
за копи/паст сразу руки обычно отрывают разработчикам, либо не сразу а када проект валиться начинает B>и прочие проблемы плохого дизайна класса — это то, что реально мешает пониманию.
вот я и хочу сказать что класс за 1000 строчек это пример плохого дизайна архитектуры, либо отсутствие постоянного рефакторинга кода...