Было проведено несколько исследований, показывающих, что строгое соблюдение последовательного визуального стиля помогает опытным программистам удерживать в памяти больше локальной задачи без необходимости запоминать отдельные элементы задачи.
Последовательный стиль кодирования помогает разделять на части
Это связано с тем, как работает человеческая память. Это называется функция. Например, хорошо изученным явлением является то, что мастера шахмат намного лучше запоминают шахматные позиции, чем люди, не знакомые с игрой. Но это только в том случае, если фигуры находятся в естественных позициях, которые могут возникнуть в обычной игре. Если вы разместите шахматные фигуры в случайном порядке, мастера шахмат не лучше, чем не-шахматисты в запоминании позиций на доске.
Та же концепция применима и к программистам. Когда стили кодирования согласованы, конструкции кодирования кажутся программисту естественными, и большие части кода легче усваиваются. Наша кратковременная память имеет емкость около семи плюс-минус два фрагмента, поэтому, чем крупнее эти знакомые фрагменты, тем больше необработанных данных наш разум может активно хранить в памяти (Джордж Миллер).
Столкнувшись со случайно отформатированным кодом, программистам приходится тратить дополнительную умственную энергию на ручной анализ отдельных частей проблемы, над которой они работают. Это лишает возможности удерживать в памяти более крупные части задачи для работы над ней. Это также означает, что требуется больше времени, чтобы достичь точки, в которой программист продуктивно решает поставленную задачу.
Время потока
Вы когда-нибудь замечали, что проблема кажется такой ясной, пока вы продолжаете над ней работать, но затем вы теряете информацию, когда возвращаетесь к проблеме позже; т.е. сломать ваше время потока? Время потока хорошо задокументировано в Peopleware (обязательно читать всем программистам). Время потока — это когда программисты выполняют большую часть работы, и достигается только тогда, когда вы работаете над проблемой в течение длительного периода времени без перерыва. Это связано с тем, что программисту требуется определенный период времени, чтобы усвоить достаточно проблемы в когнитивной памяти, чтобы эффективно работать над проблемой. Хорошо отформатированный код помогает нашей обработке визуальных изображений, что означает, что программисты намного быстрее достигают времени потока.
Я разработал стандарты кодирования в нескольких компаниях-разработчиках программного обеспечения. К сожалению, многие программисты считают, что стандарты кодирования — это просто средство утверждения ненужного контроля над тем, как они что-то делают; форма творческой цензуры. По правде говоря, фактические стандарты редко имеют значение. Ценность заключается в том, чтобы заставить всех в команде быть последовательными, даже если это означает принятие часто произвольного решения между тем, чтобы делать это моим способом или делать это вашим способом.
Вот несколько ссылок, которые я упомянул выше:
person
Robert Cartaino
schedule
25.08.2009