Как вы держите себя и своих коллег от создания огромных классов

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

Для меня одним из способов было начать с разработки, основанной на тестах, и которая поддается хорошему дизайну классов, а также SRP (принцип единой ответственности).

Я также вижу, что разработчики просто дважды нажимают на элементы управления и набирают строку за строкой в ​​методе событий, который запускается.

Каковы ваши предложения?

Ответ 1

Я предполагаю, что это зависит от ваших внутренних процессов, сколько угодно.

В моей компании мы практикуем экспертную оценку, и весь код, который появляется, должен быть "придуман" другим разработчиком, которому вы должны объяснить свой код.

Временные ограничения - это одно, но если я просмотрю код, который имеет ужасно длинные классы, то я не соглашусь на регистрацию.

Трудно привыкнуть сначала, но в конце концов, это лучше для всех.

Кроме того, наличие старшего разработчика, который является чемпионом по хорошему дизайну класса и который готов и способен привести примеры, очень помогает.

Наконец, мы часто делаем сеанс "показать и рассказывать" о кодировании, где мы можем показать нашу работу нашим сверстникам, нам не нужно делать это с уродливым кодом!

Ответ 2

Используйте инструмент, например Resharper и команду Метод извлечения.

Ответ 3

Длинные классы - один плохой запах кода многих возможных.

Устранение чрезмерно больших классов путем создания большого количества маленьких может создать свои собственные проблемы. Новые инженеры вашего проекта могут с трудом следить за потоком кода, чтобы выяснить, что происходит где. Одним из артефактов этой проблемы может быть очень высокий стек вызовов, выполнение вложенности через множество небольших классов.

Ответ 4

Другое предложение - делать только то, что задано. Не играйте в игру "Что если" и попробуйте переоценить решение. У этого есть идея "Держите это просто, глупо".

Ответ 5

Мы - магазин java и maven, и один из... Думаю, вы могли бы сказать, что методы судебной экспертизы, которые мы используем, - это отличные плагины FindBugs, PMD и javancss. Все будут давать предупреждения о чрезмерной длине метода, а вычисления цикломатической сложности могут быть очень открытыми.

Ответ 6

Самый важный шаг для меня, чтобы избежать больших классов, которые часто нарушают SRP, - это использовать простую схему внедрения зависимостей. Это освободило меня от слишком многого размышления о том, как объединить вещи. Я использую только инъекцию конструктора, чтобы сохранить дизайн без циклов. Такие инструменты, как Resharper, помогают инициализировать поля из аргументов конструктора. Эта комбинация приводит к почти нулю накладных расходов для создания и подключения новых классов и неявно побуждает меня структурировать поведение гораздо более подробно.

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

Ответ 7

используйте некоторые статические инструменты анализа кода в ваших автоматизированных сборках и напишите/настройте/используйте некоторые правила, чтобы, например, кто-то должен был написать обоснование, когда он его нарушил.