Под термином Сognitive complexity (когнитивная сложность) обычно понимают следующее — как сложно постороннему разработчику будет интуитивно понять ваш код.
Мои "любимые" примеры такой сложности, про то время, когда люди стремились к "эффективности" кода и везде. Например, в
JavaScript, использовали битовые операции. Они ведь быстрые.Что делает код
8 >> 1? Делит 8 на 2. Понимал ли я это когда-то без дополнительного гугления? Нет. (Ну только в следующие 3 минуты после предыдущего гугления). Этот код сложный для восприятия. Обычно такой код писать не надо, нужно писать только в том случае, когда вы действительно оптимизируете на производительность.Но когнитивная сложность это не только про код, эту концепцию можно распространить на все что мы делаем —
CI файлы, документацию, архитектуру приложений, даже на сообщение, которое мы пишем в Slack.Часто есть соблазн сделать что-то "эстетически" красивым или правильным. Например, чтобы все
CI файлы использовали общие компоненты из соседнего репозитория. На бумаге выглядит хорошо, но это повышает когнитивную сложность — заглянул в CI файл, а там одни ссылки куда-то.Классно, когда наши действия понижают когнитивную сложность. А если мы ее повышаем, то делать это нужно осознанно, от этого должна быть польза в другой области.
⬛️ Еще раз — когнитивная сложность это важно, чем ниже она, тем проще работать и поддерживать этот код или
CI файл. Когда что-то делаешь, то нужно себя спрашивать — это будет сложно понять постороннему человеку?Какова когнитивная сложность постов в этом канале? Пишите в комментариях.
#софтскиллы