Жесткое кодирование — это нормально. Ненадолго
TL;DR: не оставляйте жестко запрограммированный беспорядок в 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]; }
Обнаружение
[Х] Автоматически
Проверяя условия If/else, мы можем обнаружить жестко закодированные условия.
Теги
- ЕСЛИ
Заключение
В прошлом жесткое кодирование было невозможно.
С помощью современных методологий мы учимся путем жесткого кодирования, а затем обобщаем и рефакторим наши решения.
связи
Больше информации
Кредиты
Фото автора Джессика Джонстон на Unsplash
Не будьте (слишком) умными. Моя цель состояла в том, чтобы не поощрять слишком умный код, потому что «умный код» сложно написать, легко ошибиться, сложнее поддерживать и часто он не быстрее, чем более простые альтернативы, потому что его сложно оптимизировать.
Бьерн Страуструп
Эта статья является частью серии CodeSmell.