Как стать автором
Обновить
0
0
Григорий Холин @Anurath

Инди разработчик игр

Отправить сообщение

Много думал на тему когнитивной нагрузки, и для себя выработал несколько дополнительных мерил:

1) Число понятий, которые нужно подгрузить в голову, чтобы понять, что происходит, любого характера, от внутренних классов и функций до языковых фич и подключенных фреймворковых сущностей, используемых в коде. Стало быть, если из других частей кода уже была нужда подгрузить группу понятий, заново её подгружать человеку, работавшему с этой кодовой базой, уже будет не нужно, поэтому выгодно иметь везде однотипный код, а не лепить уникальное решение, которое теоретически на 5% быстрее в ограниченном наборе ситуаций, если нет прямых доказательств такой нужды.

2) Соответствие понятий из кода и понятий в голове, нужных для его осознания. Кроме явных, вроде классов, интерфейсов, функций и переменных, бывают неявные понятия, вроде isValid которые не вынесены в отдельный bool, как в примере из статьи, но всё равно должны быть подгружены в голову. Код, предоставлющий все нужные для его понимания понятия, с названиями, которые легко ассоциируются с сутью, читать легче и быстрее.

3) Локальность кода. Когда весь код, нужный для осознания, находится в одном и том же небольшом файле, а еще лучше, на одном экране, когнитивная нагрузка меньше, чем если он размазан по 6 разным файлам в произвольных частях кодовой базы и для подгрузки нужно постоянно прыгать по множественным перевызовам. Обёртки, в частности, приводят к этому такому негативному эффекту.

4) Отношение числа значимых строк кода к числу структурных. Значимые строки это строки кода, которые активно участвуют в работе программы: манипулирование данными, вычисления, условные выражения, циклы, вызовы внешних методов и ввод-вывод. Структурные - все остальные. Перегруженные структурными строками программы при прочих равных сложнее читать.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность