Закоулки мозга

[@McConnell2004]

Общие вопросы

  • Применяется ли форматирование в основном для логического структурирования кода?
  • Может ли схема форматирования применяться единообразно?
  • Позволяет ли форматирование получить код, который легко сопровождать?
  • Улучшает ли схема форматирования читаемость кода?

Управляющие структуры

  • Содержит ли код двойные отступы в парах begin-end или {}?
  • Отделяются ли последовательные блоки друг от друга пустыми строками?
  • Форматируются ли сложные выражения с учетом удобочитаемости?
  • Форматируются ли блоки из одного оператора единообразно?
  • Согласуется ли стиль форматирования операторов case с форматированием других управляющих структур?
  • Отформатированы ли операторы goto так, что их применение очевидно?

Отдельные операторы

  • Применяются ли пробелы для повышения удобочитаемости логических выражений, обращений к массивам и аргументов методов?
  • Выглядит ли конец строки с незавершенным оператором очевидно некорректным?
  • Сделан ли при переносе строк отступ стандартного размера?
  • Не содержит ли каждая строка более одного оператора?
  • Не содержат ли операторы побочных эффектов?
  • Не содержит ли каждая строка более одного определения данных?

Комментарии

  • Сделаны ли в комментариях отступы такого же размера, как и в коде, который они комментируют?
  • Легко ли сопровождать принятый стиль комментариев?

Методы

  • Отформатированы ли аргументы всех методов так, что каждый из них легко читать, исправлять и комментировать?
  • Используются ли пустые строки для разделения составных частей метода?

Классы, файлы и программы

  • Существует ли однозначное соответствие между классами и файлами для большинства классов и файлов?
  • Если файл содержит несколько классов, сгруппированы ли методы каждого класса вместе, и можно ли четко выделить каждый класс?
  • Разделяются ли методы в файле пустыми строками?
  • Вместо более строгого организационного принципа не стоит ли упорядочить все методы по алфавиту?

Ключевые моменты

  • Главная цель визуального форматирования — это подчеркивание логической структуры кода. В критерии оценки достижения этой цели входят аккуратность, единообразие, удобство чтения и сопровождения кода.
  • Критерий хорошего внешнего вида имеет вторичное, далеко не основное значение. Однако если другие критерии соблюдены, а лежащий в основе код написан хорошо, то форматирование будет выглядеть привлекательно.
  • Visual Basic поддерживает явные блоки, а стандартное соглашение в Java предписывает их использование, поэтому, программируя на этих языках, вы можете применять явные блоки. В C++ хорошо смотрится эмуляция явных блоков или обозначение границ блоков с помощью пар begin-end.
  • Структурирование кода само по себе имеет большое значение. Конкретные соглашения менее важны, чем сам факт, что вы последовательно применяете определенные соглашения. Договоренности по форматированию, соблюдаемые лишь от случая к случаю, могут сильно ухудшить читаемость кода.
  • Многие аспекты форматирования сродни религиозным вопросам. Пытайтесь разделять объективные и субъективные предпочтения. Используйте явные критерии для обоснования вашей точки зрения при обсуждении стилевых предпочтений.