Запах кода 133 — жестко закодированные условия IF

Жесткое кодирование — это нормально. На короткий период времени

TL;DR: Не оставляйте жестко закодированные условия IF.

Проблемы

  • Тестируемость

  • Жестко закодированные значения

  • Нарушение принципа открытости/закрытости

Решения

  1. Замените все 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

#oop #webdev #tutorial #codenewbie

Запах кода 102 — Код со стрелками

Maxi Contieri ・ Nov 15 ’21 ・ 2 min read

#oop #javascript #cleancode #рефакторинг

Подробнее

  • Как избавиться от IF навсегда

  • Разработка, управляемая тестами

Кредиты

Фото Jessica Johnston on Unsplash


Не будьте (слишком) умными. Я хотел сказать, что не стоит использовать слишком умный код, потому что «умный код» трудно писать, легко ошибиться, труднее поддерживать, и часто он не быстрее более простых альтернатив, потому что его трудно оптимизировать.

Бьярне Струструп

Программная инженерия Великие цитаты

Maxi Contieri ・ Dec 28 ’20 ・ 13 min read

#codenewbie #программирование #цитаты #программное обеспечение

Эта статья является частью серии CodeSmell.

Как найти зловонные части вашего кода

Maxi Contieri ・ May 21 ’21 ・ 4 min read

#codenewbie #учебник #качество кода #новички

Оцените статью
Procodings.ru
Добавить комментарий