Публикации по теме 'code-smells'
Овеществление объектов: решение общих проблем с программным обеспечением
TL;DR: Use arrays for rapid prototyping, use object for serious business
Проблемы
Связь Сокрытие информации Дублирование кода Быстрая ошибка Честность
Решения
Овеществление объектов Создавайте связные небольшие объекты Избегайте анемичных объектов и определяйте их связные отношения.
Образец кода
Неправильный
// Array with some raw data, what can go wrong?
val coordinates = arrayOf(1000.0, 2000.0)
Анемичный
data class GeographicCoordinate(
val longitude:..
Код Запах 171 — Множественное число классов
Курсы — моя ценность
TL;DR: классы представляют понятия. И концепции единственны.
Проблемы
Именование Стандарты кода
Решения
Переименовать классы в единственное число
Контекст
Называть вещи трудно.
Нам нужно договориться об определенных правилах.
Образец кода
Неправильный
class Users
Верно
class User
Обнаружение
[Х] Автоматически
Это синтаксическое правило.
Теги
Именование
Заключение
Назовите понятия в единственном числе.
Классы..
Code Smell 169 — Склеенные методы
Не делайте две или более вещей одновременно.
TL;DR: старайтесь быть как можно более атомарными в своих методах
Проблемы
Связанный код Сложнее тестировать Труднее читать
Решения
Разбейте метод
Рефакторинг
Рефакторинг 002 — метод извлечения Найдите несколько фрагментов кода, которые можно сгруппировать и вызвать атомарно. blog.devgenius.io
Контекст
Если вы называете метод с помощью «И», вы, вероятно, упускаете..
Кодовый запах 11 - Подклассификация для повторного использования кода
Повторное использование кода - это хорошо. Но создание подклассов создает статическую связь.
Проблемы
Связь Ремонтопригодность
Решения
Пользуется композицией.
Исключения
Если иерархия следует принципу ведет себя как , то это безопасно.
Образец кода
Неправильный
Правильно
Обнаружение
Переопределение может выдавать предупреждения при создании подкласса конкретных методов. Глубокие иерархии (более 3 уровней) также являются признаком плохого подкласса...
Проблема с «кодом пахнет?»
Большинство из них произвольные, педантичные и зависят от личных предпочтений!
Я знаю многих людей, которые откровенно ненавидят этот термин, говоря что-то вроде «это противно» или «не стоит так оскорблять». В этом смысл его использования. Когда что-то не так, вы говорите, что это неправильно. Если вы можете сделать это с творческим афоризмом, тем лучше. У меня нет проблем с самим термином, он правильный. Опытный разработчик может «почуять» что-то неладное при чтении участка кода...
Мой код воняет, и все в порядке
Страстная защита «запахов кода» и того, почему технические блоггеры сошли с ума
Мы все видели статьи. Вы знаете, о чем я говорю. Те . Простые, сокращающие заголовки, такие как «РЕКУРСИЯ ПЛОХО» или «НАМ НУЖНО ПРЕКРАТИТЬ ИСПОЛЬЗОВАНИЕ IF / ELSE» от людей, которые только что открыли для себя функциональное программирование. И послушайте, это нормально - иметь разные мнения о вещах, включая стили кода, но есть порог, на котором вы переходите от педантичного к догматическому. И если..
Code Smell 162 — Слишком много скобок
Скобки вводятся бесплатно. Не так ли?
TL;DR: используйте как можно меньше скобок.
Проблемы
Читабельность Синтаксическая сложность
Решения
Удалите все ненужные скобки
Контекст
Мы читаем код слева направо (по крайней мере, в западной культуре).
Круглые скобки часто нарушают этот поток, добавляя когнитивную сложность.
Образец кода
Неправильный
schwarzschild = ((((2 * GRAVITATION_CONSTANT)) * mass) / ((LIGHT_SPEED ** 2)))
Верно
schwarzschild = (2 *..