singalen: (Default)
[personal profile] singalen
Обсуждали тут несостоявшийся местный coding style standard.
Я задумался - а что такое coding style? В чём состоит стиль?
Вот что надумалось:
Программа должна быть максимально читабельной, как хороший текст. Хорошая книга - это та, из которой нечего убавить, а не та, в которую нечего добавить (чьё же это?). Словам должно быть тесно, а мыслям просторно (Державин?). Из этого следует:
  • Имя сущности - переменной, функции, класса - должно отражать её цель.
  • У одной сущности - одна легко понимаемая цель. Следовательно: one function does exactly one thing, class name clearly states its responsibility, именование пакетов и namespaces.
  • Код должен быть максимально краток. В идеале - скажите по-русски то, что делает функция, и запишите то же самое в тех же словах, но используя конструкции языка программирования, без лишних обвязочных элементов (разрешим смартпойнтеры и прочие resource guards). Код, функциональность, данные не дублируются. Scope переменной минимален.
  • Код должен быть написан красиво И предсказуемо. Отсюда - единообразие форматирования. Matching bracket должна легко находиться взглядом.
  • Краткость и надёжность: Every variable should be initialized at declaration time.
  • предсказуемость: Pointers to the unallocated memory must be initialized by NULL. После delete указателю обязательно присваивается NULL.
  • API должно быть полным и не давать лишней возможности ошибиться. Поэтому: везде, где можно, пишем const; пользуемся исключениями, а Java в смысле checked exceptions - зе бест;

Ваши замечания?