Проблема
- Низкая сплоченность
- Связь
- Ремонтопригодность
- Читабельность
Решение
- Определение методов, связанных с конкретными группами атрибутов.
- Сгруппируйте эти методы вместе.
- Разбейте исходный класс на более мелкие, более целенаправленные объекты на основе этих кластеров.
- Замените существующие ссылки новыми объектами.
Примеры
- DTO
- Денормализованные строки таблицы
Образец кода
Неправильный
class ExcelSheet ( val filename: String, val fileEncoding: String, val documentOwner: String, val documentReadPassword: String, val documentWritePassword: String, val creationTime: LocalDateTime, val updateTime: LocalDateTime, val revisionVersion: String, val revisionOwner: String, val previousVersions: List<String>, val documentLanguage: String, val cells: List<Cell>, val cellNames: List<String>, val geometricShapes: List<Shape>, )
Верно
class ExcelSheet ( val fileProperties: FileProperties, val securityProperties: SecurityProperties, val datingProperties: DocumentDatingProperties, val revisionProperties: RevisionProperties, val languageProperties: LanguageProperties, val content: DocumentContent, ) // The object now has fewer attributes, resulting in improved // testability. // The new objects are more cohesive, more testable, and lead to fewer // conflicts, making them more reusable. Both FileProperties and // SecurityProperties can be reused for other documents. Additionally, // rules and preconditions previously found in fileProperties will be // relocated to this object, resulting in a cleaner ExcelSheet // constructor.
Заключение
Раздутые объекты слишком много знают и их очень трудно изменить из-за сплоченности.
Разработчики часто меняют эти объекты, поэтому они вызывают конфликты слияния и являются частым источником проблем.
Надеюсь, вам понравилось это путешествие и вы узнали что-то новое. Если вы хотите быть в курсе моих последних мыслей и идей, не стесняйтесь подписаться на мою информационную рассылку. Вы также можете найти меня в LinkedIn или Twitter. Оставайтесь на связи и продолжайте общение!
Кредиты
Первоначально опубликовано на https://yonatankarp.com.
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord. Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.