Jump to content

Стиль программирования

(Перенаправлено из стиля кодирования )

Стиль программирования , также известный как стиль кодирования , — это способ написания исходного кода , который приводит к появлению отличительных характеристик кода; результирующий стиль кода .

Многие считают, что последовательный стиль в базе кода является ценным; чтобы сделать код более удобным для чтения и поддержки . Часто программист следует рекомендациям по стилю с целью создания кода, который соответствует единому стилю не только в его работе, но и в работе всех тех, кто использует одни и те же рекомендации.

Рекомендации по стилю бывают разных форм. Они могут быть описаны в соглашениях по кодированию в стандарте , или программисты могут придерживаться общепринятых практик и стандартов де-факто . Рекомендации могут быть описательными, например, « пишите четко – не будьте слишком умными» , или предписывающими, например, отступ – 4 пробела . Различные книги, такие как «Элементы стиля программирования», содержат примеры стилей кода.

Как и стиль в целом, стиль кода можно описать как множество отдельных аспектов, таких как отступы, именование и использование заглавных букв.

Аспекты стиля кода часто используются в контексте определенного языка программирования или семейства языков. Аспект стиля, используемый для C, может не подходить для BASIC . Однако некоторые аспекты стиля применимы ко многим языкам.

Автоматизация

[ редактировать ]

В некоторых случаях соблюдения стиля можно добиться с помощью программных средств . Инструмент форматирования кода позволяет программистам сосредоточиться на других аспектах, таких как логика и именование. Использование таких инструментов может привести к созданию более единообразного стиля кода с меньшими усилиями со стороны программистов.

Аспекты стиля

[ редактировать ]

Аспекты стиля кода включают, помимо прочего:

  • Отступы и другие пробелы
  • Именование определяемых пользователем идентификаторов
  • Использование заглавных букв ключевых слов (если это разрешено языком)
  • Использование комментариев

Стиль отступов может помочь читателю по-разному, включая: идентификацию потока управления и блоков кода. В некоторых языках программирования отступы используются для разделения блоков кода и поэтому не являются вопросом стиля. В языках, которые игнорируют пробелы, отступы могут повлиять на читаемость.

Например, отформатированный в обычно используемом стиле:

if (hours < 24 && minutes < 60 && seconds < 60) {
    return true;
} else {
    return false;
}

Возможно, плохо отформатировано:

if  ( hours   < 24
   && minutes < 60
   && seconds < 60
)
{return    true
;}         else
{return   false
;}

Известные стили отступов

[ редактировать ]

Стиль нулевого отступа ModuLiq группируется по пустой строке, а не по отступу.

Пример:

if (hours < 24 && minutes < 60 && seconds < 60)
return true;

else
return false;

Lua не использует традиционные фигурные скобки или круглые скобки ; скорее, за выражением в условном операторе должен следовать then, и блок должен быть закрыт с помощью end.

if hours < 24 and minutes < 60 and seconds < 60 then
  return true
else
  return false
end

Отступы в Lua не являются обязательными. and, or, и not функционируют как логические операторы.

Python использует отступы для обозначения структуры управления , тем самым устраняя необходимость в скобках (т. е. { и }). С другой стороны, копирование и вставка кода Python может привести к проблемам, поскольку уровень отступа вставленного кода может не совпадать с уровнем отступа текущей строки. Такое переформатирование вручную может быть утомительным, но некоторые текстовые редакторы и IDE имеют функции, позволяющие делать это автоматически. Также возникают проблемы, когда код Python становится непригодным для использования при публикации на форуме или веб-странице, где удаляются пробелы, хотя этой проблемы можно избежать, если можно заключить код в теги, сохраняющие пробелы, такие как «<pre> .. . </pre>» (для HTML ), «[code]» ... «[/code]» (для bbcode ) и т. д.

if hours < 24 and minutes < 60 and seconds < 60:
    return True
else:
    return False

Обратите внимание, что Python начинает блок с двоеточия ( :).

Программисты Python обычно следуют общепринятому руководству по стилю, известному как PEP8. [1] Существуют инструменты, предназначенные для автоматизации соблюдения требований PEP8.

Как и в Python, в Haskell существует правило «вне игры». Он имеет двумерный синтаксис, в котором отступы имеют смысл для определения блоков (хотя в альтернативном синтаксисе используются фигурные скобки и точки с запятой).

Haskell — декларативный язык, в сценарии Haskell есть операторы, но есть объявления.

Пример:

let c_1 = 1
    c_2 = 2
in
    f x y = c_1 * x + c_2 * y

можно записать в одну строку так:

let {c_1=1;c_2=2} 
in f x y = c_1 * x + c_2 * y

Haskell поощряет использование грамотного программирования , где расширенный текст объясняет происхождение кода. В грамотных сценариях Haskell (названных lhs расширение), все является комментарием, кроме блоков, помеченных как код. Программу можно написать на LaTeX , в этом случае code среда отмечает, что такое код. Кроме того, каждый активный параграф кода можно пометить, предваряя его и заканчивая пустой строкой, а каждую строку кода начинать со знака «больше» и пробела. Вот пример использования разметки LaTeX:

The function \verb+isValidDate+ test if date is valid
\begin{code}
isValidDate :: Date -> Bool
isValidDate date = hh>=0  && mm>=0 && ss>=0
                 && hh<24 && mm<60 && ss<60
 where (hh,mm,ss) = fromDate date
\end{code}
observe that in this case the overloaded function is \verb+fromDate :: Date -> (Int,Int,Int)+.

И пример использования обычного текста:

The function isValidDate test if date is valid

> isValidDate :: Date -> Bool
> isValidDate date = hh>=0  && mm>=0 && ss>=0
>                  && hh<24 && mm<60 && ss<60
>  where (hh,mm,ss) = fromDate date

observe that in this case the overloaded function is fromDate :: Date -> (Int,Int,Int).

Вертикальное выравнивание

[ редактировать ]

Некоторые программисты считают полезным выравнивать похожие элементы по вертикали (в виде таблиц или столбцов), ссылаясь на то, что это может сделать ошибки, возникающие из-за опечаток, более очевидными.

Например, без выравнивания:

$search = array('a', 'b', 'c', 'd', 'e');
$replacement = array('foo', 'bar', 'baz', 'quux');

$value = 0;
$anothervalue = 1;
$yetanothervalue = 2;

выровнено:

$search      = array('a',   'b',   'c',   'd',   'e');
$replacement = array('foo', 'bar', 'baz', 'quux');

$value           = 0;
$anothervalue    = 1;
$yetanothervalue = 2;

В отличие от невыровненного кода, выровненный код подразумевает, что значения поиска и замены связаны, поскольку у них есть соответствующие элементы. Поскольку для поиска требуется больше значений, чем для замены, если это ошибка, ее с большей вероятностью можно будет обнаружить при визуальном осмотре.

К недостаткам вертикального выравнивания относятся:

  • Зависимости между линиями, что приводит к нагрузке на обслуживание. Например, если добавлено длинное значение столбца, требующее более широкого столбца, то все строки таблицы должны быть изменены (чтобы сохранить табличную форму), что является более значительным изменением, которое приводит к дополнительным усилиям по просмотру и пониманию изменения. более поздняя дата
  • Хрупкость: если программист неправильно отформатирует таблицу при внесении изменений, в результате получится визуальный беспорядок, который труднее читать, чем невыровненный код. Простые операции рефакторинга, такие как переименование, могут нарушить форматирование.
  • Больше усилий по поддержанию, что может помешать программисту внести полезные изменения, например, улучшить имя идентификатора, поскольку это потребует значительных усилий по форматированию.
  • Требование использования шрифтов фиксированной ширины; не пропорциональные шрифты

Поддержание выравнивания можно облегчить с помощью инструмента, обеспечивающего поддержку (например, эластичных табуляторов ), хотя это приводит к зависимости от таких инструментов.

Например, простые операции рефакторинга по переименованию «$replacement» в «$r» и «$anothervalue» в «$a» приводят к следующему:

$search      = array('a',   'b',   'c',   'd',   'e');
$r = array('foo', 'bar', 'baz', 'quux');

$value           = 0;
$a    = 1;
$yetanothervalue = 2;

При невыровненном форматировании эти изменения не имеют такого драматичного, противоречивого или нежелательного эффекта:

$search = array('a', 'b', 'c', 'd', 'e');
$r = array('foo', 'bar', 'baz', 'quux');

$value = 0;
$a = 1;
$yetanothervalue = 2;

Белое пространство

[ редактировать ]

Язык свободного формата игнорирует пробелы: пробелы, табуляции и новые строки, поэтому программист может свободно стилизовать код по-разному, не затрагивая его смысл. Обычно программист использует стиль, который улучшает читаемость .

Следующие два фрагмента кода логически одинаковы, но отличаются пробелами.

int i;
for(i=0;i<10;++i){
    printf("%d",i*i+i);
}

против

int i;
for (i = 0; i < 10; ++i) {
    printf("%d", i * i + i);
}

Использование табуляции для пробелов является спорным. Проблемы с выравниванием возникают из-за разных позиций табуляции в разных средах и смешанного использования табуляции и пробелов.

Например, один программист предпочитает четыре позиции табуляции , настроил свой набор инструментов таким образом и использует их для форматирования своего кода.

int     ix;     // Index to scan array
long    sum;    // Accumulator for sum

Другой программист предпочитает число табуляции, равное восьми, и его набор инструментов настроен таким образом. Когда кто-то другой изучает исходный код, ему вполне может быть трудно его читать.

int             ix;             // Index to scan array
long    sum;    // Accumulator for sum

Одним из широко используемых решений этой проблемы может быть запрет на использование табуляции для выравнивания или правила установки табуляции. Обратите внимание, что табуляции работают нормально, если они используются последовательно, ограничены логическими отступами и не используются для выравнивания:

class MyClass {
	int foobar(
		int qux, // first parameter
		int quux); // second parameter
	int foobar2(
		int qux, // first parameter
		int quux, // second parameter
		int quuux); // third parameter
};

См. также

[ редактировать ]
  1. ^ «PEP 0008 — Руководство по стилю для кода Python» . python.org.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 36155a0cb4a7cb9e1db99c3c7455b5d8__1719663000
URL1:https://arc.ask3.ru/arc/aa/36/d8/36155a0cb4a7cb9e1db99c3c7455b5d8.html
Заголовок, (Title) документа по адресу, URL1:
Programming style - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)