2018-11-19 Вредный Хардкод

Проблема: в коде сайта «захардкожен» его адрес. Например, в коде crm на странице со ссылками на различные отчеты:

<a href='http://example.com/crm/carbon/report1.php'>Подробный отчет о клиентах</a><br/>
<a href='https://example.com/crm/carbon/report2.php?month=&year='>Отчет оценки</a><br/>
<a href='http://example.com/crm/carbon/report3.php'>Просроченные задачи</a><br/>

Что приводит к трудностям при развертывании этого кода на тестовом стенде с другим адресом. И даже хуже: можно ходить по тестовой crm и случайно попасть на продакшен и даже не заметить этого!

Как нужно:

<a href='/crm/carbon/report1.php'>Подробный отчет о клиентах</a><br/>
<a href='/crm/carbon/report2.php?month=&year='>Отчет оценки</a><br/>
<a href='/crm/carbon/report3.php'>Просроченные задачи</a><br/>

То же будет касаться к остальному хардкоду: адреса REST-сервисов, баз данных, логины/пароли и.т.п. Такое лучше сохранять в файлах конфигурации.

Будьте осторожны! Не переусердствуйте с файлами конфигурации!

Следуя этому правилу, можно начать выносить в кофиги все: адреса внешних ресурсов, адрес локального интерфейса, порты на котором работает web-интерфейс, название продукта и.т.д. Это приведет к разрастанию файла конфигурации опциями, которые никогда не будут изменяться (или будут изменяться раз в несколько лет - а это дешевле будет сделать sed'ом) и повышением сложности и ухудшением читаемости кода! Соблюдайте баланс!

Упрощенное правило: лучше не создавать хардкод, если можно этого не делать (как в примере с html ссылками). Но если без конфига не обойтись - делайте опцию в конфиге только если ее придется часто изменять и это потребуется в ближайшую неделю (если это потребуется «когда-то позже» - возможно, это не потребуется никогда).

~~OWNERAPPROVE~~

Прочитал правила разработки как не надо делать 2018-11-19 вредный хардкод
Yes(1) No(0) Clear

Yes:
,

No:

Ваш комментарий. Вики-синтаксис разрешён: