Autumn SALE

Одержимість елементарними типами

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

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

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

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

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

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

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

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

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

Лікування

Виграш

  • Підвищує гнучкість коду завдяки використанню об’єктів замість примітивних типів.

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

  • Може розкрити факти дублювання коду.