Глянь мій новий курс по Git! Привіт! Глянь мій новий курс по Git! Привіт! Глянь мій новий курс по Git на GitByBit.com! Привіт! Хочеш класно освіжити Git? Глянь мій новий курс на GitByBit.com!

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

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

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

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

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

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

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

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

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

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

Лікування

Виграш

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

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

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