Публикации по теме 'code-smells'


Kotlin Code Smell 25 — Состояние как свойства
Когда объект меняет свое состояние, лучшее решение — изменить атрибут, верно? Проблемы Изменчивость Загрязнение атрибутов Сеттеры Решения Используйте неизменяемые объекты Модель заявляет как математическое включение набора. Отделите состояние от объекта, так как оно случайно. Примеры Диаграммы состояний Образец кода Неправильный sealed class OrderState data object OrderStatePending : OrderState() data object OrderStateConfirmed: OrderState() class..

Code Smell 147  — «Слишком много методов»
Учебные классы отлично подходят для сбора протоколов TL;DR: не добавляйте случайный протокол к своим занятиям Проблемы Читабельность Нарушение единой ответственности Плохая сплоченность Высокое сцепление Низкая возможность повторного использования Решения Сломай свой класс Экстракт Класс Связанные рефакторинги Рефакторинг 007 — Извлечение класса Поведение повторяется во всей системе. Но нам не хватает концепции medium.com..

Kotlin Code Smell 016 — Проверка типа экземпляра на полиморфизм
TL;DR: Trust your collaborators. Don't check who they are. Ask them to do it instead. Проблемы "Связь" Интерференция метамодели ИФ Решения Избегайте is , as , ::class , ::class.java и т. д. Не используйте рефлексию и метапрограммирование для объектов предметной области. Замените IFs на полиморфизм. Используйте полные объекты , избегайте нулей и сеттеров, отдавайте предпочтение неизменяемости , и у вас никогда не будет если . Образец кода Неправильный..

Code Smell 70 - Генераторы анемичных моделей
TL; DR: не создавайте анемичных объектов. Гораздо меньше с автоматическими инструментами. Проблемы Анемичные объекты Связь с реализацией Сложнее отлаживать Решения Создавайте свои объекты вручную. Сосредоточьтесь на существенном поведении, а не на случайном хранении данных. Образец кода Неправильный <? AnemicClassCreator::create( 'Employee', [ new AutoGeneratedField('id', '$validators->getIntegerValidator()'), new..