В классе есть конструкторы, переменные и методы, которые не следует изменять. Внутри класса также очень большой метод, который, пройдя по проекту, будет изменен и построен и разветвлен другими.
Есть ли способ изолировать код, который будет изменен в свои собственные файлы, и каково было бы большинство людей это делать? Другой класс, интерфейс или просто сохранить его в одном файле?надлежащий способ изолировать код, который должен быть изменен в будущем?
ответ
Ниже приведено только мое мнение.
То, что вы должны и не должны делать:
- У вас есть очень большой метод. Поэтому я предполагаю, что это делает больше, чем одно. Я думаю, вы должны превратить это:
-
//Do thing 1
xxx1();
xxx2();
xxx3();
//Do thing 2
yyy1();
yyy2();
yyy3();
//Do thing 3
zzz1();
zzz2();
zzz3{};
в этом:
doThing1();
doThing2();
doThing3();
и объявить эти методы:
private void doThing1() {
xxx1();
xxx2();
xxx3();
}
private void doThing2() {
yyy1();
yyy2();
yyy3();
}
private void doThing3() {
zzz1();
zzz2();
zzz3();
}
Вы в основном просто крошить метод на части, чтобы его было легче управлять.
Если ваш редактор позволяет это, вы должны добавить комментарии, чтобы редактор добавил кнопки, чтобы вы могли сложить эту область кода. Это может оставить ненужный материал, когда вы работаете над другими вещами.
Если ваш редактор не позволяет этого, вы должны добавлять комментарии, чтобы рассказать об этом людям:
-
// MARK - things related to <insert name of large method here>
private void doThing1() {
xxx1();
xxx2();
xxx3();
}
private void doThing2() {
yyy1();
yyy2();
yyy3();
}
private void doThing3() {
zzz1();
zzz2();
zzz3();
}
// MARK - other stuff
<insert other stuff here>
Вы также можете добавить распакованные методы внутренний класс для большей ремонтопригодности.
Если извлекаемые методы растут все больше и больше, помните, чтобы разорвать их на куски, а
Вы не должны поместить этот код в другой файл, если он тесно связан с классом.
Если большой метод имеет несколько вещей, чтобы сделать с классом, рассмотреть вопрос о переходе его в отдельный класс
- 1. Запрос должен быть изменен
- 2. Временный пароль должен быть изменен
- 3. Глобальный объект, который будет изменен, когда он не должен быть
- 4. Идентификатор суффикса, который должен быть изменен перед чтением?
- 5. Код, который не должен быть асинхронным.
- 6. Разделяющий код, который должен быть организован
- 7. Есть ли способ изолировать библиотеку, которая блокирует асинхронный код
- 8. Документирующий API, который может быть изменен
- 9. your.package.namespace - на что он должен быть изменен?
- 10. Extjs надлежащий способ показать/скрыть
- 11. Должен быть лучший способ
- 12. javascript надлежащий способ вызова функции
- 13. надлежащий способ написания FunctionalTest в playframework
- 14. Код JQuery работает, но должен быть способ уменьшить его.
- 15. Код, который должен быть запущен на нескольких конкретных листах
- 16. Преобразование объекта, который должен быть неизменным
- 17. Простой способ выполнить код в ближайшем будущем в PYthon
- 18. js код должен быть скорректирован
- 19. Wordpress надлежащий способ добавления страниц
- 20. Вызов NetValidatePasswordPolicy из C# всегда возвращает Пароль должен быть изменен
- 21. Как изолировать незащищенный код JavaScript
- 22. Должен быть более простой способ
- 23. Должен быть способ использования Xdebug
- 24. код должен быть повторен в PHP
- 25. Как дублировать все данные в таблице, за исключением одного столбца, который должен быть изменен
- 26. Сценарий SQL должен быть изменен для уменьшения загрузки SQL Server
- 27. spring mvc hibernate надлежащий способ управления транзакциями
- 28. Альтернативы EditText в виджете? Должен быть способ
- 29. Powershell надлежащий способ передать объект в функцию
- 30. код в методе «InitializeComponent» генерируется дизайнером и не должен быть изменен вручную
Очень большой метод, как правило, плохой код запах, но не видя кода, или зная, что он делает, мы не можем делать никаких полезных советов. –
Прокомментируйте это с помощью '/ * /'? –
Просто определите интерфейс, который будет реализован клиентом, вызовите метод через этот интерфейс. –