Дубягин Максим.pptx
- Количество слайдов: 13
Форматирование программного кода. Автор: Дубягин Максим Викторович
Форматирование и оформление кода Одним из главных аспектов качества кода является его визуальное оформление, за счет которого можно существенно повысить читаемость программы и уже тем самым серьезно облегчить ее поддержку и доработку. Первым моментом, оговариваемым при согласовании правил оформления кода, является стиль отступов для обособления структурных блоков программы – тел функций, циклов и тому подобного. Всегда необходимо уточнять, используются для таких отступов символы табуляции или пробела, и если используются пробелы, то сколько (как правило, выбор ведется между значениями 2, 4 и 8). Казалось бы, необходимость использования единообразного стиля отступов по крайней мере в рамках одного файла очевидна, но в реальной жизни часто встречаются смешения стилей, сильно затрудняющие читаемость программы. Типичный случай: если в одних местах для отступов используются четыре пробела, а в других – табуляция, то в текстовом редакторе, у которого ширина табуляции равна четырем пробелам, ничего криминального заметно не будет. Но вот если открыть такой код в редакторе, где табуляция равна восьми пробелам, то получится изрядная каша. Поэтому не стоит довольствоваться тем, что в вашей IDE код выглядит красиво, необходимо обеспечить его читаемость вне зависимости от настроек редактора
Правила форматирования кода включают и ряд других аспектов, единообразие которых влияет на восприятие программы: использование пробелов рядом со скобками и операторами в логических и арифметических выражениях (например, обособлять ли в конструкции «i=1» знак равенства пробелами или нет); правила расстановки фигурных скобок, ограничивающих структурные блоки программы во многих языках (например, следует ли в программе на языке С ставить открывающую фигурную скобку на той же строке, где располагается логическое условие «if» , или нужно переносить ее на новую строку); правила разбиения логического выражения с множеством условий на несколько строк; требования к вертикальному выравниванию, чтобы несколько подряд идущих схожих инструкций выглядели красиво:
Отступы Стиль о тступов — правила форматирования исходного кода, в соответствии с которыми отступы программных блоков проставляются в удобочитаемой манере.
Отступы в Си Существует четыре основных стиля отступов Ci, их целью является облегчение визуального отслеживания управляющих конструкций. Камнем преткновения является расстановка программных скобок { } и оформление операторов (if, else, for, while, или do) в блоки.
Стиль «K&R» Назван в честь Керигана и Ритчи из-за того, что все примеры из их книги «Язык программирования Ci» (нередко обозначаемой как просто «K&R» по инициалам авторов) отформатированы подобным образом. Также известен как «kernel style» (BSD KNF; из-за того, что ядро UNIX написано на нём), а также как «Единственный Правильный Скобочный Стиль» ( One True Brace Style - 1 TBS) со слов его приверженцев. Основной отступ, показанный ниже, состоит из 8 пробелов (или одной табуляции) на уровень. Хотя чаще всего используется 4 пробела. if (<cond>) { ····<body> }
Стиль Олмана — по имени Эрика Олмана, программиста из Университета Брекли, написавшего множество BSD-утилит на нём (еще известен как «стиль BSD» ). Имеет сходство с Паскалем и Алголом. Этот стиль по умолчанию предлагается в Microsoft Visual Studio и Apple Xcode. Стиль заключается в следующем: Открывающая программная скобка располагается на новой строке с тем же отступом, что и выражение, находящееся на предшествующей строке. Первое выражение внутри программных скобок располагается на новой строке с отступом, увеличенным (по выбору программиста) на: 1 символ табуляции (данный вариант используется в исходном коде современных версий программы sendmail, автором которой является Эрик Олман) 2, 4 или 8 пробелов (конкретный выбор количества пробелов должен оставаться неизменным на протяжении всего текста программы) любое другое количество пробелов или символов табуляции при условии, что это количество не изменяется на протяжении всего текста программы Последующие выражения внутри программных скобок располагаются с тем же отступом, что и первое. Закрывающая программная скобка располагается с отступом, равным отступу соответствующей ей открывающей программной скобке (то есть точно под нею). Пример кода, отформатированного в стиле Олмана: if (<cond>) { ····<body> }
Стиль Уайтсмитс — популярен из-за примеров, шедших с Whitesmits Ci — одним из первых компиляторов с языка Сi. Основной отступ на уровень для скобок и блока — 8 пробелов. if (<cond>) ····{ ····<body> ····}
Стиль GNU Стиль GNU— используется во всех исходниках проекта GNU (например, GNU Emacs). Отступ составляет 2 символа на уровень, скобки расположены на собственном отступе. if (<cond>) ··{ ····<body> ··}
Вертикальное разделение концепций Практически весь код читается слева направо и сверху вниз. Каждая строка представляет выражение или условие, а каждая группа строк представляет законченную мысль. Эти мысли следует отделять друг от друга пустыми строками. Это чрезвычайно простое правило оказывает глубокое воздействие на визуальную структуру кода. Каждая пустая строка становится зрительной подсказкой, указывающей на начало новой самостоятельной концепции.
Вертикальное сжатие Если вертикальные пропуски разделяют концепции, то вертикальное сжатие подчеркивает тесные связи. Таким образом, строки кода, между которыми существует тесная связь, должны быть «сжаты» по вертикали.
Вертикальные расстояния Концепции, тесно связанные друг с другом, должны находиться поблизости друг от друга по вертикали. Если концепции связаны тесно, то их вертикальное разделение должно показывать, насколько они важны для понимания друга.
Горизонтальное форматирование, разделение и сжатие Горизонтальное форматирование служит для группировки взаимосвязанных компонентов и разделение разнородных. Длина строки 80 -120 символов. Как правило, при горизонтальном форматировании имеют место следующие правила: Например, Знаки «=» окружаются пробелами. Это обеспечивает их визуальное выделение. В арифметических выражениях операции с более высоким приоритетом могут пробелами не выделяться. Не следует отделять имена функций от открывающих скобок, потому что имя функции тесно связано с ее аргументами. Пробелы изолируют их вместо того, чтобы объединять.
Дубягин Максим.pptx