Що таке хардкод

- Алло, це хардкор?
- Алло, це харткот?
- Технічна підтримка, здрастуйте!

Що таке хардкод
Час прийшов. Мабуть, так, настав час і цей однойменний анти-патерн програмування, що послужив основою для назви нашої компанії став гідний окремої статті. Провівши невелике опитування серед найбільш обізнаних клієнтів, колег, здобувачів, що ж вони розуміють під терміном Хардкод (Hard coding), я отримав безліч найнесподіваніших відповідей. Дивно, але виявилося навіть самі розробники не завжди розуміють глибинний сенс хардкода, буває, навіть вважають його неякісним кодом і більш того плутають з "говнокодом".







Мова, звичайно ж, піде про сайти, вирішенні повсякденних завдань. Але для початку, давайте визначимося з критеріями якості завдань, щоб різниця в підходах була максимальна помітна. Нижчий мінімальний список вимог, актуальний для будь-якого проекту / завдання.

вартість розробки
Ні, тут ми не будемо говорити про ціноутворення, видах контрактів - це окрема історія. Сьогодні я ваш капітан очевидність і з усією відповідальністю заявляю: "Ціна - це критерій номер раз"!

Строки виконання робіт

Гідним продовженням в списку вимог є звичайно ж - дедлайн. Завдання має бути виконана в строк, поки її не реалізували конкуренти або того гірше - ідея морально не застаріла і стала нікому не потрібна. Підсумок один - можна розходитись.

Результат повинен в точності виконувати поставлене завдання в заздалегідь обумовлених умовах. Іншими словами, коректно працювати.

Подальша підтримка коду

Як то кажуть last but not least (останній, але не від цього не менш важливий), і на жаль, найчастіше найбільш недооцінений фактор. А говорить він нам про можливість через півроку / рік, без особливих зусиль, продовжити роботу з проектом і, що не менш важливо, з новими співробітниками / техподдержкой / командою, в загальному людьми, які не брали участь в розробці перших версій. Цей фактор є актуальним для більш-менш об'ємних завданнях, розробка яких, з огляду на витрачених зусиль, термінів і вартості не дозволяє викинути результат в смітник, не замислюючись.







Хардкод "на котиків"

Уявіть, у вас є інтернет-магазин, де всі розрахунки (купони, акції, податки, прайси постачальників, послуги доставки, тощо) ведуться в рублях. І ось з'являється задача перевірити попит на ваш асортимент в найближчих країнах-сусідах, куди найпростіше здійснити доставку. Для цього ціни в магазині повинні бути як мінімум в доларах і євро.

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

І ось, умовно кажучи, через два місяці, з новим магазином або допрацьованим старим ви отримуєте:

  • Кілька тисяч ретельно задокументованих рядків коду
  • Інструкцію з налаштування для адміністратора, користувачів
  • Щоденну синхронізацію з кількома банками
  • Можливість вказати коригувальні коефіцієнти для будь-якої валюти
  • і багато інших дуже важливих і корисних речей

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

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

Суцільна користь і очевидний профіт.

Технічно таке рішення займає на порядок менше рядків коду, завдання виконується в рази швидше, коштує дешевше.

Очевидно для відвідувачів немає різниці, як це працює всередині, якщо вони як і раніше можуть здійснювати покупки.

Подальший супровід, доопрацювання

У цьому весь сенс правильного хардкода - коли його використовують на благо. І як би дивно це не прозвучало, але хардкод може бути дійсно якісним і ефективним рішенням. Якщо ви обмежені за часом або існує ризик, що функція не затребувана, то такий підхід заощадить вам значну кількість сил і засобів. Адже головне - це вчасно відповісти на питання кінцевого споживача, виконати поставлене завдання, виправдати його сподівання.

Переживаєте подібний випадок?
Звертайтеся до експертів в області хардкода - 8 (499) 577-01-09.