В нашей бесконечной погоне за чистым и поддерживаемым кодом я представляю в этом посте простое правило, позволяющее уменьшить когнитивную сложность и помочь вашему коду оставаться легко читаемым.
Это правило легко запомнить и ему легко следовать; буквально, название говорит само за себя. Чтобы быть немного более подробным, подумайте об этом:
Организуйте логические пути функции так, чтобы она возвращалась как можно скорее.
Другими словами, сначала напишите самый простой выход. В качестве практического примера рассмотрим следующую функцию:
Если мы затем рефакторим эту функцию с учетом этого правила, вы можете получить что-то вроде следующего:
Это простой пример, но он показывает, как применение этого правила может изменить структуру вашей функции. В последнем примере мы уменьшили вложенность, когнитивную сложность и то, что я буду называть зависимостью когнитивной линии. Когда строка кода появляется внутри вложенного условного блока, эти строки присоединяются к этому условному выражению. Тогда читатель может почувствовать гораздо более сильную потребность помнить обо всех условиях при чтении кода. В примере с рефакторингом условия обрабатываются и забываются. Понятно, что в обоих примерах предварительные условия каждой строки одинаковы, но я считаю, что структура помогает уменьшить шум и передать только то, что важно для понимания и исправления ошибок.
Пример с рефакторингом довольно ясно показывает нам, что у этой функции есть три конечных состояния или условия выхода. Это может помочь будущим разработчикам понять, где им нужно внести изменения. Новая структура также дает нам четкие точки разделения, по которым мы можем разбить эту функцию на несколько более мелких функций для чистоты. Я часто использую этот метод в качестве первого шага к рефакторингу слишком большого и сложного метода.