Також відомий як Primitive Obsession

Запах коду Одержимість елементарними типами

Симптоми і ознаки

  • Використання елементарних типів замість маленьких об'єктів для невеликих завдань (наприклад, валюта, діапазони, спеціальні рядки для телефонних номерів і тому подібне).

  • Використання констант для кодування якоїсь інформації (наприклад, константа USER_ADMIN_ROLE = 1 для позначення користувачів з роллю адміністратора).

  • Використання строкових констант як назв полів в масивах.

Причини появи

Як і більшість інших запахів, цей розпочинається з маленької слабкості. Програмістові знадобилося поле для зберігання якихось даних. Він подумав, що створити поле елементарного типу куди простіше, ніж новий клас. Це й було зроблено. Потім знадобилося інше поле, і воно також було додане схожим чином. А потім не встигли ви озирнутися, як клас вже збільшився до грандіозних розмірів.

Примітивні типи досить часто використовуються для «симуляції» типів. Це коли замість окремого типу даних у вас є декілька чисел або рядків, які складаються в список допустимих значень для якоїсь сутності. Найчастіше цим конкретним числам і рядкам дають зрозумілі імена за допомогою констант, що і стає причиною їх широкого поширення.

Ще одним поганим методом використання примітивних типів є «симуляція» полів. При цьому клас містить великий масив різноманітних даних, а в ролі індексів масиву для отримання цих даних використовуються строкові константи, задані в класі.

Лікування

  • Якщо ви маєте безліч різноманітних полів примітивних типів, можливо, деякі з них можна логічно згрупувати і перенести в свій власний клас. Ще краще, якщо в цей клас ви зможете перенести і поведінку, пов'язану з цими даними. Впоратися з цією проблемою допоможе заміна значення даних об'єктом.

Виграш

  • Підвищує гнучкість коду завдяки використанню об’єктів замість примітивних типів.
  • Покращує розуміння і організацію коду. Операції над певними даними тепер зібрані в одному місці, і їх не потрібно шукати по всьому коду. Тепер не треба здогадуватися, навіщо створені всі ці дивні константи і чому поля містяться в масиві.
  • Може розкрити факти дублювання коду.

Замучились читати?

Збігайте за подушкою, в нас тут контенту на 7 годин читання.

Або спробуйте наш новий інтерактивний курсу. Він набагато цікавіший за банальний тест.

Дізнатися більше...