Закажите продвижение и поддержку сайта и получите в подарок до 16 000 руб. на правки по сайту

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

Будь в курсе

subscrible
Скидка 5%
по подписке

– Алло, это хардкор?
– Алло, это харткот?
– Техническая поддержка, здравствуйте!

Время пришло. Пожалуй, да, настало время и этот одноименный анти-паттерн программирования, послуживший основой для названия нашей компании стал достоин отдельной статьи. Проведя небольшой опрос среди наиболее осведомленных клиентов, коллег, соискателей, что же они понимают под термином Хардкод (Hard coding), я получил множество самых неожиданных ответов. Удивительно, но оказалось даже сами разработчики не всегда понимают глубинный смысл хардкода, бывает, даже считают его некачественным кодом и более того путают с “говнокодом”.

Не будем отбирать хлеб у википедии, копируя определение хардкода (hard coding (англ.)), а поговорим о его практическом смысле и применении. Статья предназначена для людей далеких от программирования, поэтому на мой взгляд, проще всего понять смысл термина на простом пример (на котиках), насколько это возможно, не погружаясь в технические детали.

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

Стоимость разработки
Нет, здесь мы не будем говорить о ценообразовании, видах контрактов – это отдельная история. Сегодня я ваш капитан очевидность и со всей ответственностью заявляю: “Цена – это критерий номер раз”!

Сроки выполнения работ

Достойным продолжением в списке требований является конечно же – дедлайн. Задача должна быть выполнена в срок, пока ее не реализовали конкуренты или того хуже — идея морально не устарела и стала никому не нужна. Итог один – можно расходиться.

Работоспособность

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

Дальнейшая поддержка кода

Как говорится last but not least (последний, но не от этого не менее важный), и к несчастью, чаще всего самый недооцененный фактор. А говорит он нам о возможности через полгода/год, без особого труда, продолжить работу с проектом и, что не менее важно, с новыми сотрудниками/техподдержкой/командой, в общем людьми, не принимавшими участие в разработке первых версий. Этот фактор актуален для более или менее объемных задачах, разработка которых, ввиду затраченных усилий, сроков и стоимости не позволяет выбросить результат в помойку, не задумываясь.

Хардкод «на котиках»

Представьте, у вас есть интернет-магазин, где все расчеты (купоны, акции, налоги, прайсы поставщиков, услуги доставки, т.д.) ведутся в рублях. И вот появляется задача проверить спрос на ваш ассортимент в ближайших странах-соседях, куда проще всего осуществить доставку. Для этого цены в магазине должны быть как минимум в долларах и евро.

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

И вот, условно говоря, через два месяца, с новым магазином или доработанным старым вы получаете:

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

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

Искренне сочувствую, если эта история вам знакома и напомнила о былых неудачах. Это как раз тот самый случай, где оптимальным решением может стать хардкод. А именно, конкретно в данном примере достаточно жестко, можно сказать прямо “в лоб”, прописать курс валюты непосредственно в коде или максимум с одним единственным полем для его ручного редактирования по мере необходимости, без автоматической интеграции.

Сплошная польза и очевидный профит.

Стоимость, сроки

Технически такое решение занимает на порядок меньше строк кода, задача выполняется в разы быстрее, стоит дешевле.

Работоспособность

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

Дальнейшее сопровождение, доработки

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

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

Переживаете подобный случай?
Обращайтесь к экспертам в области хардкода – 8 (499) 577-01-09

Добавить комментарий