Чем меньше (проще) класс — тем лучше программист.
При грамотном подходе к архитектуре можно делать классы по 50-60 строк, 2-3 метода.
Основное ограничение у человека в голове — способность видеть одновременно до 7 (чаще даже меньше) объектов с их зависимостями. В большом классе видишь только зависимости внутри класса и упускаешь из вида внешние.
Но как писать код — искусство требующее практики, нарабатываемой годами.
Основная «читаемость» идет от архитектуры, думаю — т.е. про то, какие сущности, как они разбиты по классам, как классы взаимодействуют.
Если на время инкапсулироваться в одном классе и взять его содержимое как данное — можно использовать всякие приемчики чтобы уменьшить время на «эээ, где тут чё?» и «чёт я потерялся тут». Я например использую такие:
— система следования элементов внутри класса — сначала поля, потом конструкторы, потом открытые методы, потом приватные. Например.
— юзаю регионы ("#region"(C#)) чтобы сгруппировать опять-таки отдельно поля и свойства, отдельно конструкторы, отдельно открытые методы, отдельно приватные и т.д.
— на горячих клавишах у меня навешены операции свернуть/развернуть все и свернуть в определения.
— комментарии к элементам, т.е. когда сворачиваю к определениям выден список элементов и комментарии по этим элементам, в таком виде довольно удобно быстро подгрузить к себе в оперативку понимание, что есть данный класс.
автор, в классе главное его функциональность и для каких целей он создан
если это самостоятельный класс и весь функционал под него вы пишите сами, то класс реально может быть и 10.000 строк, но весь вопрос в том, а не очередной ли это велосипед )))
если вы видите класс размером 50 строк, то это не значит, что он не использует другие классы, думаю вы поняли...
отсюда вывод — короткий класс конечно воспринимается удобнее, к удобству нужно стремиться, но знать библиотеки на все случаи жизни не возможно
ps. пример с boost, там алгоритмов на все случаи жизни написали, но мне удобнее использовать stl, alglib, qt и немного своего, хотя иногда и boost цепляю
сейчас вот стандарт с++17 осваиваю и постепенно отказываюсь от boost
знаете зачем нужны классы? чтобы как в том смешном ролике — пропихнуть в форточку, и закрыть. т.е. забыть.
не зря придуманы библиотеки/проекты/пекиджи/классы/методы/переменные.
чтобы не плавать — давайте говорящие имена методам и переменным.
используйте шаблон фасад, например.
вообще же, если в классе >200 строк, обычно это значит что он уже разросся.
но это всё зависит. бывает у класса много интерфейсов, которые надо реализовывать.
у меня классы 50-200 строк обычно.
большие 250-350, и совсем немного тех что больше 500.
кмк чем больше строк в самом приложении, тем меньше будет в отдельном классе.
довольно непросто связывать вместе большие классы.
ещё наверное помогает план. когда вы заранее расписываете какой класс за что отвечает на бумаге. и заполняете шапку комментария.
ну и рефакторинг никто не отменял.
итого: план, осмысленные имена методов и классов, фасад, рефакторинг, 250 строк — много.
ну и про 7 объектов уже сказали.
ну плюс нормальный редактор, с окном outline view и тп.
При грамотном подходе к архитектуре можно делать классы по 50-60 строк, 2-3 метода.
Основное ограничение у человека в голове — способность видеть одновременно до 7 (чаще даже меньше) объектов с их зависимостями. В большом классе видишь только зависимости внутри класса и упускаешь из вида внешние.
Но как писать код — искусство требующее практики, нарабатываемой годами.
dnmsk, 11 методов в классе+ внутренний класс с парой методов. Начал путаться.
Хорошая программа — это программа, которую легко поддерживать и расширять в течение долгого времени.
Почитайте принципы SOLID
Потом займитесь Гаммой , Dependency injection и Inversion of control
И тогда, наверняка, вдруг запляшут облака Вы будете писать лучшие в мире программы.
Желаю успехов.
если покажете проблемный код, то можно будет порекомендовать что-то конкретное
Основная «читаемость» идет от архитектуры, думаю — т.е. про то, какие сущности, как они разбиты по классам, как классы взаимодействуют.
Если на время инкапсулироваться в одном классе и взять его содержимое как данное — можно использовать всякие приемчики чтобы уменьшить время на «эээ, где тут чё?» и «чёт я потерялся тут». Я например использую такие:
— система следования элементов внутри класса — сначала поля, потом конструкторы, потом открытые методы, потом приватные. Например.
— юзаю регионы ("#region"(C#)) чтобы сгруппировать опять-таки отдельно поля и свойства, отдельно конструкторы, отдельно открытые методы, отдельно приватные и т.д.
— на горячих клавишах у меня навешены операции свернуть/развернуть все и свернуть в определения.
— комментарии к элементам, т.е. когда сворачиваю к определениям выден список элементов и комментарии по этим элементам, в таком виде довольно удобно быстро подгрузить к себе в оперативку понимание, что есть данный класс.
Как и писали выше, 100 строк — это не так много.
Если оно не засунуто в один метод.
Профессиональный разработчик воспринимает класс, как набор методов.
Он смотрит на всё как бы сверху.
Не вдаваясь без необходимости в детали.
Подобный подход позволяет схематически видеть существенную часть программы.
Пишите небольшие комментарии к методам.
На первых этапах этого достаточно, чтобы каждый раз не тратить время и не путаться, перечитывая код.
Архитектура, выделение сущностей, декомпозиция, связанность, сцепленность и пр. конечно важны, но всё это несколько дальше.
Пока не парьтесь по этому поводу.
Учитесь смотреть на вещи абстрактно.
С высоты птичьего полёта.
если это самостоятельный класс и весь функционал под него вы пишите сами, то класс реально может быть и 10.000 строк, но весь вопрос в том, а не очередной ли это велосипед )))
если вы видите класс размером 50 строк, то это не значит, что он не использует другие классы, думаю вы поняли...
отсюда вывод — короткий класс конечно воспринимается удобнее, к удобству нужно стремиться, но знать библиотеки на все случаи жизни не возможно
ps. пример с boost, там алгоритмов на все случаи жизни написали, но мне удобнее использовать stl, alglib, qt и немного своего, хотя иногда и boost цепляю
сейчас вот стандарт с++17 осваиваю и постепенно отказываюсь от boost
не зря придуманы библиотеки/проекты/пекиджи/классы/методы/переменные.
чтобы не плавать — давайте говорящие имена методам и переменным.
используйте шаблон фасад, например.
вообще же, если в классе >200 строк, обычно это значит что он уже разросся.
но это всё зависит. бывает у класса много интерфейсов, которые надо реализовывать.
у меня классы 50-200 строк обычно.
большие 250-350, и совсем немного тех что больше 500.
кмк чем больше строк в самом приложении, тем меньше будет в отдельном классе.
довольно непросто связывать вместе большие классы.
ещё наверное помогает план. когда вы заранее расписываете какой класс за что отвечает на бумаге. и заполняете шапку комментария.
ну и рефакторинг никто не отменял.
итого: план, осмысленные имена методов и классов, фасад, рефакторинг, 250 строк — много.
ну и про 7 объектов уже сказали.
ну плюс нормальный редактор, с окном outline view и тп.