Будучи Java-разработчиком в цикле гибкой разработки, я понял, что очень важно убедиться, что я спроектировал свои классы таким образом, чтобы я мог легко их реорганизовать без особых проблем. Я хочу знать, каковы лучшие практики, которым вы руководствуетесь в своем ежедневном цикле проектирования / разработки, которые помогают вам легко выполнять рефакторинг.
Например, я знаю, что я должен скрыть детали реализации за интерфейсом. Поэтому, если завтра я изменю реализацию, я не буду беспокоить клиентский код, который использует эти API. Точно так же я должен по возможности использовать «шаблон проектирования фабрики», чтобы изменение классов реализации можно было контролировать из одного класса фабрики, а не выяснять все места и изменять их.
Точно так же я хотел бы знать, какие все лучшие практики, которым вы руководствуетесь, помогут мне.