Жесткое кодирование — это нормально. На короткий период времени
TL;DR: Не оставляйте жестко закодированные условия IF.
- Проблемы
- Решения
- Контекст
- Код примера
- Неправильный
- Правильно
- Обнаружение
- Теги
- Заключение
- Отношения
- Запах кода 36 — Переключатели/case/elseif/else/if операторы
- Maxi Contieri ・ Nov 28 ’20 ・ 1 min read
- Запах кода 102 — Код со стрелками
- Maxi Contieri ・ Nov 15 ’21 ・ 2 min read
- Подробнее
- Кредиты
- Программная инженерия Великие цитаты
- Maxi Contieri ・ Dec 28 ’20 ・ 13 min read
- Как найти зловонные части вашего кода
- Maxi Contieri ・ May 21 ’21 ・ 4 min read
Проблемы
-
Тестируемость
-
Жестко закодированные значения
-
Нарушение принципа открытости/закрытости
Решения
- Замените все IF динамическим условием или полиморфизмом.
Контекст
Жесткое кодирование условий iF отлично подходит при разработке, управляемой тестами.
Нам нужно навести порядок.
Код примера
Неправильный
private string FindCountryName (string internetCode)
{
if (internetCode == "de")
return "Germany";
else if(internetCode == "fr")
return "France";
else if(internetCode == "ar")
return "Argentina";
//lots of elses
else
return "Suffix not Valid";
}
Правильно
private string[] country_names = {"Germany", "France", "Argentina"} //lots more
private string[] Internet_code_suffixes= {"de", "fr", "ar" } //more
private Dictionary<string, string> Internet_codes = new Dictionary<string, string>();
//There are more efficient ways for collection iteration
//This pseudocode is for illustration
int currentIndex = 0;
foreach (var suffix in Internet_code_suffixes) {
Internet_codes.Add(suffix, Internet_codes[currentIndex]);
currentIndex++;
}
private string FindCountryName(string internetCode) {
return Internet_codes[internetCode];
}
Обнаружение
[X] Автоматическое
Проверяя условия If/else, мы можем обнаружить жестко закодированные условия.
Теги
- IFs
Заключение
В прошлом жесткое кодирование не было вариантом.
В современных методологиях мы учимся на жестком кодировании, а затем обобщаем и рефакторим наши решения.
Отношения

Запах кода 36 — Переключатели/case/elseif/else/if операторы
Maxi Contieri ・ Nov 28 ’20 ・ 1 min read

Запах кода 102 — Код со стрелками
Maxi Contieri ・ Nov 15 ’21 ・ 2 min read
Подробнее
-
Как избавиться от IF навсегда
-
Разработка, управляемая тестами
Кредиты
Фото Jessica Johnston on Unsplash
Не будьте (слишком) умными. Я хотел сказать, что не стоит использовать слишком умный код, потому что «умный код» трудно писать, легко ошибиться, труднее поддерживать, и часто он не быстрее более простых альтернатив, потому что его трудно оптимизировать.
Бьярне Струструп

Программная инженерия Великие цитаты
Maxi Contieri ・ Dec 28 ’20 ・ 13 min read
Эта статья является частью серии CodeSmell.

Как найти зловонные части вашего кода
Maxi Contieri ・ May 21 ’21 ・ 4 min read