Программная инженерия Андрей Дмитриев ©2009
Оформление программного кода
План Введение Причины появления Основные аспекты оформления Выводы
Соглашения об оформлении coding standards, coding convention, programming style набор правил и соглашений, используемых при написании исходного кода на некотором языке программирования
Причины появления Принимается группой или сообществом разработчиков с целью единообразного оформления кода проекта(ов) Единство позволяет визуально выделять значимые блоки Стиль оформления может защищать от ошибок программирования Проще разобраться в коде
Что описывают соглашения ??
Что описывают соглашения Имена переменных и т.д. Отступы Комментарии Оформление блоков (скобки, переводы строк) Использование пробелов Длины строк, пустые строки Бинарные операторы …
Общие правила (1/2) Код чаще читается, чем пишется Делайте идентификаторы в меру длинными Избегайте потенциальных конфликтов имен в публичном API
Общие правила (2/2) Делать НЕ стоит: Использовать малопонятные префиксы и суффиксы Использовать символ подчеркивания Давать имена, отличающихся регистром букв
Стили оформления Паскаль – первая буква заглавная и все последующие первые буквы слов тоже заглавные. Например, BackColor, LastModified, DateTime Кэмел – первая буква строчная, а остальные первые буквы слов заглавные. Например, borderColor, accessTime, templateName Какой стиль принят в C#? В Java?
Пространства имен Можно использовать имя компании или назначение проекта: namespace MyCompany.Controls {} namespace MyCompany.Collections {} package mycompany.controls; package mycompany.collections;
Имена Имена классов обычно должны быть существительными (File) Имена интерфейсов – прилагательные или существительные (Readable) Имена методов – глаголы (remove)
Параметры Делайте имена значимыми При совпадении имени параметра с именем поля, разделяйте их с помощью префикса this. Type GetType(string typeName); string Format(string format, params object[] args);
Комментарии Многострочные или однострочные? Пишите, что код делает, а не какая операция выполняется
Волшебные числа Не используйте литеральные константы магические числа зашитые в код размеры буферов времена ожидания Определите константу или переменную только для чтения
Выводы
Ссылки «Совершенный код» С. Макконнелл RSDN стиль ML Java code conventions Стандарт кодирования GNU (Столлман) С++
Q&A
Спасибо! Андрей Дмитриев ©2009