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

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
правила_разработки:как_не_надо_делать:2018-11-19_вредный_хардкод [19.11.2018 08:30]
nikolay_carbonsoft1 создано
правила_разработки:как_не_надо_делать:2018-11-19_вредный_хардкод [20.05.2019 15:18] (текущий)
Строка 1: Строка 1:
 +**Проблема:​ ** в коде сайта "​захардкожен"​ его адрес. Например,​ в коде crm на странице со ссылками на различные отчеты:​
 +<code html>
 +<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/>​
 +</​code>​
 +Что приводит к трудностям при развертывании этого кода на тестовом стенде с другим адресом. И даже хуже: можно ходить по тестовой crm и случайно попасть на продакшен и даже не заметить этого!
 +
 +**Как нужно:​**
 +<code html>
 +<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/>​
 +</​code>​
 +
 +То же будет касаться к остальному хардкоду:​ адреса REST-сервисов,​ баз данных,​ логины/​пароли и.т.п. Такое лучше сохранять в файлах конфигурации.
 +
 +<WRAP center round important 80%>
 +Будьте осторожны! Не переусердствуйте с файлами конфигурации!
 +
 +Следуя этому правилу,​ можно начать выносить в кофиги все: адреса внешних ресурсов,​ адрес локального интерфейса,​ порты на котором работает web-интерфейс,​ название продукта и.т.д. Это приведет к разрастанию файла конфигурации опциями,​ которые никогда не будут изменяться (или будут изменяться раз в несколько лет - а это дешевле будет сделать sed'​ом) и повышением сложности и ухудшением читаемости кода! Соблюдайте баланс!
 +
 +Упрощенное правило:​ лучше не создавать хардкод,​ если можно этого не делать (как в примере с html ссылками). Но если без конфига не обойтись - делайте опцию в конфиге только если ее придется часто изменять и это потребуется в ближайшую неделю (если это потребуется "​когда-то позже"​ - возможно,​ это не потребуется никогда).
 +</​WRAP>​
 +
 +~~OWNERAPPROVE~~
 +/*Не удаляйте эту строку и ниже!*/
 +{(rater>​id=1|name=Прочитал_правила_разработки:​как_не_надо_делать:​2018-11-19_вредный_хардкод|type=vote|trace=user|tracedetails=1)}