Типовые ошибки дизайна программного кода | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 3 августа, печатный экземпляр отправим 7 августа.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №2 (240) январь 2019 г.

Дата публикации: 11.01.2019

Статья просмотрена: 16 раз

Библиографическое описание:

Демидов П. Д. Типовые ошибки дизайна программного кода // Молодой ученый. — 2019. — №2. — С. 1-2. — URL https://moluch.ru/archive/240/55453/ (дата обращения: 20.07.2019).



Как правило, разработчики учатся следить за логическими ошибками, случайно вносимыми в код, и защищаться от них. Такие ошибки могут варьироваться от необработанных частных случаев, до логических ошибок, которые приводят к сбою целых систем. Но меньшее внимание уделяется более тонким вопросам, которые не влияют на работу системы. Например, проблемы проектирования, которые усложняют поддержку системы и увеличивают вероятность ошибок в будущем.

Код с запашком — это сигнал о том, что код должен быть подвергнут рефакторингу для улучшения расширяемости, читаемости и поддержки. [1]

Ниже описаны некоторые наиболее распространенные запахи кода, которые при раннем обнаружении не должны вызвать трудностей при устранении:

  1. Длинные методы

Большая часть времени программиста тратится на чтение, а не на написание кода. Помимо того, что при чтении таких методов приходится держать много сложной логики в голове, обычно это признак того, что у метода слишком много обязанностей. Длинные методы затрудняют поддержку и отладку кода. Если невозможно просмотреть весь метод на экране смартфона, следует рассмотреть его разделение на несколько более мелких методов, каждый из которых выполняет одну конкретную функцию.

  1. Отказ от наследства

Если класс наследуется от базового класса, но не использует ни одного из унаследованных полей или методов, необходимо подумать, действительно ли здесь нужно наследование. Признаками этого запаха кода может быть то, что унаследованные методы остаются неиспользованными или переопределяются с пустыми телами методов.

  1. Группы данных

Если несколько вызовов методов принимают один и тот же набор аргументов, это может быть признаком того, что эти аргументы связаны между собой. Для повышения организации кода группу аргументов можно объединить в одном классе.

  1. Дублирование кода

Распространена ситуация, когда исправленная ошибка появляется в другой части системы. Это может быть результатом дублирования кода, когда ошибка была исправлена не во всех продублированных фрагментах кода. Это создает накладные расходы с точки зрения обслуживания. Разработчики при исправлении ошибки в одном из дублей могут не знать о существовании других.

  1. Посредник

Когда класс существует только для делегирования вызовов другому классу, разработчик должен спросить себя, какова его реальная цель. Иногда это результат рефакторинга, при котором логика постепенно удаляется из класса, оставляя почти пустую оболочку.

  1. Одержимость примитивными типами

Примитивные типы дают мало с точки зрения контекста предметной области. Поле id может в конечном итоге содержать любое значение. Если у примитивов есть доменное значение, можно обернуть их в небольшой класс. В последствии этот класс может быть расширен дополнительными методами.

  1. Комментарии

Можно ли доверять комментариям? Там, где комментарии повторяют то, что можно прочитать из кода, они не несут пользы, особенно если они потеряли актуальность и больше не соответствуют коду.

Вместо того, чтобы добавлять комментарий для пояснения фрагмента кода, нужно подумать, как организовать этот код, чтобы он был понятен без комментария. Может быть возможно предоставить более описательное имя, которое обеспечивает ту же ясность, что и комментарий.

  1. Расходящиеся модификации

Проблем возникает, когда класс имеет множество причин для изменения. В идеале должна быть прямая связь между общими изменениями и классами.

  1. Стрельба дробью

В основном, при выполнении любых доработок приходится вносить много небольших изменений во множество различных классов. Проблема в том, что когда изменения повсюду, их трудно найти, и легко пропустить важные изменения.

  1. Завистливые функции

Это когда метод не использует данные или методы из класса, к которому он принадлежит. Вместо этого он часто обращается к другому классу.

  1. Ленивый класс

Класс, затраты на существование которого не окупаются выполняемыми им функциями, должен быть ликвидирован.

  1. Имя метода, включающее тип

Необходимо избегать размещения типов в именах методов; это не только избыточно, но и заставляет менять имя в случае изменения типа.

  1. Название метода, включающее тип

Необходимо избегать размещения типов в именах методов; это не только избыточно, но и заставляет менять имя в случае изменения типа.

  1. Невнятное название

Название метода должно лаконично описывать, что делает этот метод. Признаком правильного названия является то, что другой разработчик только по нему может определить назначение метода.

  1. Мертвый код

Неиспользуемый код должен быть удален.

Вывод

При разработке программного продукта необходимо постоянно следить за появлением запахов кода и устранять их на ранних этапах, чтобы избежать более серьезных проблем в будущем.

В этой статье были перечислены наиболее распространенные запахи кода, но ими список не ограничивается. [2]

Литература:

  1. Фаулер М. Рефакторинг: улучшение существующего кода. — СПб.: Символ-Плюс, 2003. — 432 с.
  2. Код с запашком // Википедия. URL: https://ru.wikipedia.org/wiki/Код_с_запашком (дата обращения: 8.01.2019).
Основные термины (генерируются автоматически): класс, изменение, код, комментарий, распространенный запах кода, случай изменения типа, имя методов, размещение типов.


Похожие статьи

Анализ методов распознавания образов | Статья в журнале...

Отдельный класс методов распознавания.

Описанная проблема в некоторых случаях может быть решена изменением расчета расстояния.

Этот метод относит неизвестный вектор признаков к классу, отдельные образцы которого находятся ближе всех.

Разработка методики автоматической идентификации...

2. Виды штриховых кодов и их анализ. Штриховой код – знак, предназначенный для автоматизированных идентификации и учета информации о товаре, закодированной в виде цифр и штрихов. Проведем обзор наиболее популярных типов штрих-кодов для оценки их...

QR-коды, их свойства и применение | Статья в журнале...

Приведены примеры визуальных изменений картинки кода и использования QR-кодов в статистике рекламных компаний.

После чего выбрать тип кода (статический или динамический) и в специальное поле ввести информацию, которую вы хотите зашифровать, и...

Исследование и сравнительный анализ методов аутентификации

Если типы линий, точек, их порядок и положение правильны, то система будет оценивать, насколько графический знак отличается от эталона

Следующим методом защиты держателя пластиковой карты и смарт-карты является ввод PIN-кода. Защита РIN-кода карты является...

Применение методов text mining для классификации информации...

Библиографическое описание: Горковенко Д. К. Применение методов text mining для классификации информации, распространяемой в социальных сетях

При анализе социальных сетей важно и необходимо рассматривать распространение информации в сети.

Расширение отладочного интерфейса PyDbg для противодействия...

определенных блоков кода для удостоверения отсутствия изменений, сделанных из-за отладки)

PyDbg представляет собой класс, полностью написанный на языке Python и

Представляемое расширение реализовано в виде добавленного в класс метода, получившего...

Шаблоны проектирования GoF. Структурные шаблоны.

Там код очень сложно понять, сложно составить, но потом, когда код уже составлен, код становится очень простым и понятным.

Более того, шаблон «Bridge» рекомендуют использовать тогда, когда в проекте две оси изменения. Если в системе три оси изменения...

Использование вектора вторичных признаков при классификации...

В случае, когда классифицируемый сигнал имеет неравномерное изменение огибающей, значение может быть определено как.

Дли точного описания огибающей сигнала производится его квантование по уровню и на каждом уровне определяется код вида огибающей сигнала.

Алгоритмы помехоустойчивого кодирования и их аппаратная...

Код для проверки целостности данных — CRC (Cyclicredundancycheck) код, базирующийся на полиномиальной арифметике, код, который

Для исследования аппаратной реализации данных алгоритмов использовалась ПЛИС типа FPGA семейства Cyclone III, разработанной фирмой...

Похожие статьи

Анализ методов распознавания образов | Статья в журнале...

Отдельный класс методов распознавания.

Описанная проблема в некоторых случаях может быть решена изменением расчета расстояния.

Этот метод относит неизвестный вектор признаков к классу, отдельные образцы которого находятся ближе всех.

Разработка методики автоматической идентификации...

2. Виды штриховых кодов и их анализ. Штриховой код – знак, предназначенный для автоматизированных идентификации и учета информации о товаре, закодированной в виде цифр и штрихов. Проведем обзор наиболее популярных типов штрих-кодов для оценки их...

QR-коды, их свойства и применение | Статья в журнале...

Приведены примеры визуальных изменений картинки кода и использования QR-кодов в статистике рекламных компаний.

После чего выбрать тип кода (статический или динамический) и в специальное поле ввести информацию, которую вы хотите зашифровать, и...

Исследование и сравнительный анализ методов аутентификации

Если типы линий, точек, их порядок и положение правильны, то система будет оценивать, насколько графический знак отличается от эталона

Следующим методом защиты держателя пластиковой карты и смарт-карты является ввод PIN-кода. Защита РIN-кода карты является...

Применение методов text mining для классификации информации...

Библиографическое описание: Горковенко Д. К. Применение методов text mining для классификации информации, распространяемой в социальных сетях

При анализе социальных сетей важно и необходимо рассматривать распространение информации в сети.

Расширение отладочного интерфейса PyDbg для противодействия...

определенных блоков кода для удостоверения отсутствия изменений, сделанных из-за отладки)

PyDbg представляет собой класс, полностью написанный на языке Python и

Представляемое расширение реализовано в виде добавленного в класс метода, получившего...

Шаблоны проектирования GoF. Структурные шаблоны.

Там код очень сложно понять, сложно составить, но потом, когда код уже составлен, код становится очень простым и понятным.

Более того, шаблон «Bridge» рекомендуют использовать тогда, когда в проекте две оси изменения. Если в системе три оси изменения...

Использование вектора вторичных признаков при классификации...

В случае, когда классифицируемый сигнал имеет неравномерное изменение огибающей, значение может быть определено как.

Дли точного описания огибающей сигнала производится его квантование по уровню и на каждом уровне определяется код вида огибающей сигнала.

Алгоритмы помехоустойчивого кодирования и их аппаратная...

Код для проверки целостности данных — CRC (Cyclicredundancycheck) код, базирующийся на полиномиальной арифметике, код, который

Для исследования аппаратной реализации данных алгоритмов использовалась ПЛИС типа FPGA семейства Cyclone III, разработанной фирмой...

Задать вопрос