Как вы держите себя и своих коллег от создания огромных классов
Пользователи Stackoverflow,
Как вы держите себя в руках от создания больших классов с помощью сложных методов. Когда крайние сроки напряжены, вы в конечном итоге пытаетесь взломать вещи вместе, и это заканчивается тем, что нужно будет реорганизовать.
Для меня одним из способов было начать с разработки, основанной на тестах, и которая поддается хорошему дизайну классов, а также SRP (принцип единой ответственности).
Я также вижу, что разработчики просто дважды нажимают на элементы управления и набирают строку за строкой в методе событий, который запускается.
Каковы ваши предложения?
Ответы
Ответ 1
Я предполагаю, что это зависит от ваших внутренних процессов, сколько угодно.
В моей компании мы практикуем экспертную оценку, и весь код, который появляется, должен быть "придуман" другим разработчиком, которому вы должны объяснить свой код.
Временные ограничения - это одно, но если я просмотрю код, который имеет ужасно длинные классы, то я не соглашусь на регистрацию.
Трудно привыкнуть сначала, но в конце концов, это лучше для всех.
Кроме того, наличие старшего разработчика, который является чемпионом по хорошему дизайну класса и который готов и способен привести примеры, очень помогает.
Наконец, мы часто делаем сеанс "показать и рассказывать" о кодировании, где мы можем показать нашу работу нашим сверстникам, нам не нужно делать это с уродливым кодом!
Ответ 2
Используйте инструмент, например Resharper и команду Метод извлечения.
Ответ 3
Длинные классы - один плохой запах кода многих возможных.
Устранение чрезмерно больших классов путем создания большого количества маленьких может создать свои собственные проблемы. Новые инженеры вашего проекта могут с трудом следить за потоком кода, чтобы выяснить, что происходит где. Одним из артефактов этой проблемы может быть очень высокий стек вызовов, выполнение вложенности через множество небольших классов.
Ответ 4
Другое предложение - делать только то, что задано. Не играйте в игру "Что если" и попробуйте переоценить решение. У этого есть идея "Держите это просто, глупо".
Ответ 5
Мы - магазин java и maven, и один из... Думаю, вы могли бы сказать, что методы судебной экспертизы, которые мы используем, - это отличные плагины FindBugs, PMD и javancss. Все будут давать предупреждения о чрезмерной длине метода, а вычисления цикломатической сложности могут быть очень открытыми.
Ответ 6
Самый важный шаг для меня, чтобы избежать больших классов, которые часто нарушают SRP, - это использовать простую схему внедрения зависимостей. Это освободило меня от слишком многого размышления о том, как объединить вещи. Я использую только инъекцию конструктора, чтобы сохранить дизайн без циклов. Такие инструменты, как Resharper, помогают инициализировать поля из аргументов конструктора. Эта комбинация приводит к почти нулю накладных расходов для создания и подключения новых классов и неявно побуждает меня структурировать поведение гораздо более подробно.
Все это лучше всего работает, если данные хранятся отдельно от поведения, а ваш язык поддерживает конструкции, подобные событиям, которые могут использоваться для развязки связи, которая течет в нисходящем направлении графика зависимостей.
Ответ 7
используйте некоторые статические инструменты анализа кода в ваших автоматизированных сборках и напишите/настройте/используйте некоторые правила, чтобы, например, кто-то должен был написать обоснование, когда он его нарушил.