Hatred's Log Place

DON'T PANIC!

Aug 9, 2010 - 2 minute read - programming c++

Мой "C/C++ Coding Style" версия 1.1 + Astyle

Подправил малость стандарт кодирования для своих проектов, из изменений:

  • Для функций, в которых производятся действия по инициализации допускается использовать префикс init (сокращенный вариант initialize)
  • Убрана жесткая рекомендация по использованию 0 вместо NULL в C++
  • Добавлена рекомендация использовать calloc вместо malloc в C
  • Добавлена рекомендация добавлять пробел после ключевого слова языка и открывающей скобкой
  • Рекомендация не использовать одиночные блоки if, while, for и т.п.
  • Добавлена рекомендация по использованию astyle с учетом стандартов перечисленных здесь.

Более подробно про Astyle.

Сама программа является достаточно мощным форматировщиком кода, причем с приятной документацией (для почти всегда достаточно простого astyle –help).

Моя команда astyle выглядит так:

astyle --style=ansi --indent=spaces=4 <br/>
          --indent-classes --indent-switches --indent-preprocessor --indent-col1-comments <br/>
          --max-instatement-indent=24 --min-conditional-indent=4 <br/>
          --pad-oper --pad-header --unpad-paren --add-brackets <br/>
          --convert-tabs --align-pointer=name <br/>
          <source_file_name> 

По опциям пробежимся (за подробностями в astyle --help):

  • --style=ansi - базовый стиль форматирования, что бы на каждый чих установки не делать
  • --indent=spaces=4 - выравнивание пробелами, использовать 4 оных
  • --indent-classes - делать отступ для protected:, private: и т.д.
  • --indent-switches - делать отступ у case внутри switch
  • --indent-preprocessor - отступ у многострочных макроопределений
  • --indent-col1-comments - делать отступ однострочным комментариям (???)
  • --max-instatement-indent=24 - при разбивке выражения на строки, следующая строка обычно выравнивается по предыдущей, в частности, по открывающей скобке. Это опция ограничивает максимальный отступ в 24 символа
  • --min-conditional-indent=4 - ??? задал по аналогии :)
  • --pad-oper - делает отступы вокруг операторов, после запятых, точек с запятой, если просто - делает более удобочитаемыми математические выражения
  • --pad-header - делает отступы после ключевых слов языка и перед открывающимися скобками (у if, while, for и т.д.)
  • --unpad-paren - а вот ненужые удаляет (типа после функции), можно использовать только когда нужно
  • --add-brackets - обрамляет однострочные блоки в фигурные скобки
  • --convert-tabs - преобразует табуляцию в пробелы (эквивалентное количество, задано выше)
  • --align-pointer=name сдвигает *, & в определении к имени переменной, т.е. преобразует char* ptr или char * ptr -> char *ptr