Качество кода: что стоит посмотреть на ifs?

Мы все видели обсуждения идеальной длины метода. Мой любимый тест лакмусовой бумажки для проверки качества кода - это посмотреть на инструкции if, чтобы проверить, соответствуют ли тестируемые значения текущему классу. Дальнейшее удаление тестируемого значения из контекста теста, тем сильнее запах проблемы моделирования.

Итак, мой вопрос ... может ли кто-нибудь наполнить меня происхождением и стоимостью этой меры. Является ли это признанной метрикой? Возможно ли желание /желание моделировать объекты таким образом, чтобы вся условная логика проверяла только членов класса? Какую важность вы придадите этой мере?

1 голос | спросил bbsimonbb 4 32015vEurope/Moscow11bEurope/MoscowWed, 04 Nov 2015 18:22:39 +0300 2015, 18:22:39

2 ответа


4

Использование оператора if - это то, что я называю «бифуркацией». Он разбивает код на два разных пути выполнения, увеличивая его циклическую сложность. Поэтому изучение инструкций if является полезным упражнением для анализа кода.

Вы можете коснуться других классов без участия операторов if, поэтому я не уверен, что конкретная комбинация if и касаться других классов особенно важно, кроме как идентифицировать

ответил Robert Harvey 4 32015vEurope/Moscow11bEurope/MoscowWed, 04 Nov 2015 19:02:08 +0300 2015, 19:02:08
1
  

посмотрите на инструкции if, чтобы проверить, соответствуют ли тестируемые значения текущему классу

Что означает значение относится к текущему классу ? Вы поощряете состояние дублировать объекты?

Я бы аргументировал аргумент счетчика. Объект может иметь общедоступные логические свойства или методы, которые содержат информацию о состоянии, относящуюся к другим тестируемым объектам.

Singletons

Много раз одиночные игры (особенно в iOS dev) будут иметь bool для проверки доступности этой службы, но это полезно для тестирования других объектов.

if (NetworkManager.sharedInstance().isInternetAvailable())

Структуры данных

Как насчет объекта DTO или пользовательской структуры данных:

if (jsonDictionary.count > 0)
if (person.age >= 21)

Предположим, что приведенные выше структуры данных используются контроллером (в MVC), какой бизнес имеет контроллер для хранения возраста человека, когда существует возраст для объекта person.

ответил morbidhawk 5 42015vEurope/Moscow11bEurope/MoscowThu, 05 Nov 2015 00:55:33 +0300 2015, 00:55:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132