Дисциплина оформления и ведения исходного текста
Совместная разработка =>
Дисциплина использования корпуса текстов (хранилища)
Дисциплина формирования исходного текста
Пример дисциплины работы с хранилищем (git)
- Одно изменение — один коммит
 - Двухчастный commit-message (резюме+полный текст)
 - Трёхпоточная разработка в ветках (devel, release, legacy)
 - Многоуровневый нециклический орграф слияния (merge) хранилищ
 
Дисциплина оформления кода
Цель: продуктивная совместная работа
- Не «качество кода»
 - Не «унификация кода»
 - Не «скорость написания кода»
 - …
 
(хотя могут стоять такие задачи)
- Индивидуальная продуктивность (типичные ошибки, «удобный» вид, планирование)
 - Включение в общее инф. пространство (документирование, комментарии, повторнаое использование кода)
 - Доступность сообществу (KISS, следование общим правилам)
 (greg@kroah.com со ссылкой на Elliot Solloway & Kate Ehrlich): добровольное использование разумных правил позволяет надеяться на то, что все в сообществе также используют эти правила
- Учёт специфики проекта и сообщества: 
- Размер и ротация сообщества
 - Требования к надёжности кода
 - Специфика ЯП и предметной области
 
 
Что стоит фиксировать
- Внешний вид
 - Именование объектов
 - (не-)Использование конструкций ЯП
 - Разбиение на модули (C: функции, .c и .h файлы)
 - Комментарии
 - Использование системных и библиотечных примитивов 
=> Отдельная дисциплина при работе с большими инструментариями
 
Пример: Linux Kernel Coding Style
«First off, I'd suggest printing out a copy of the GNU coding standards, and NOT read it. Burn them, it's a great symbolic gesture.» 1
- Indentation
 - Breaking long lines and strings
 - Placing Braces and Spaces
 - Naming
 - Typedefs
 - Functions
 - Centralized exiting of functions
 - Commenting
 You've made a mess of it
- Kconfig configuration files
 - Data structures
 - Macros, Enums and RTL
 - Printing kernel messages
 - Allocating memory
 - The inline disease
 - Function return values and names
 - Don't re-invent the kernel macros
 - Editor modelines and other cruft
 - Inline assembly
 
Замечания от greg@croah
Д/З
Ещё раз с печалью проглядеть исходный код Greed 3.4. Указать несоответствия LKSG
На самом деле master -- это довольно старая ветка. Выкачать ветку sisyphus, посмотреть изменения. Всё ли поправлено по части CSG?
Применить indent и astyle к этому коду. Много ли изменилось? Продолжает ли компилироваться? А работать?
Найти в Интернетах Lindent, упоминающийся в LKSG. Применить его к разным программам, в т. ч. к коду greed.
Посмотреть на http://www.ioccc.org/ Зачем они это делают?
 Как работает программа, вычисляющая число Пи? (Для начала — как её скомпилировать, чтобы вычисляла?) 
