~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 3679A5232CA27EB26C73CB15C58BF88A__1718317560 ✰
Заголовок документа оригинал.:
✰ Programming style - Wikipedia ✰
Заголовок документа перевод.:
✰ Стиль программирования — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Programming_style ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/36/8a/3679a5232ca27eb26c73cb15c58bf88a.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/36/8a/3679a5232ca27eb26c73cb15c58bf88a__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 09:03:07 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 14 June 2024, at 01:26 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Стиль программирования — Википедия Jump to content

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

Из Википедии, бесплатной энциклопедии

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

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

Книга «Элементы стиля программирования» , написанная в 1970-х годах, содержит примеры на Фортране и PL/I .

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

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

Автоматизация [ править ]

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

Аспекты стиля [ править ]

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

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

Отступ [ править ]

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

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

if   (  часы   <   24   &&   минуты   <   60   &&   секунды   <   60  )   { 
     return   true  ; 
  }   Еще   { 
     вернуть   ложь  ; 
  } 

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

if    (   часы     <   24 
    &&   минуты   <   60 
    &&   секунды   <   60 
 ) 
 {  return      true 
 ;}           else 
 {  return     false 
 ;} 

Известные стили отступов [ править ]

МодуЛик [ править ]

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

Пример:

if   (  часы   <   24   &&   минуты   <   60   &&   секунды   <   60  ) 
 возвращают   true  ; 

  иначе 
 вернуть   ложь  ; 
Возьмите [ править ]

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

если   часы   <   24   ,   минуты   <   60   и   секунды   <   60   , тогда 
   верните   true 
 , иначе 
   верните   ложное 
 завершение 

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

Питон [ править ]

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

если   часы   <   24   ,   минуты   <   60   и   секунды   <   60  : 
     вернуть   True 
 , иначе  : 
     вернуть   False 

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

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

Хаскелл [ править ]

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

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

Пример:

пусть   c_1   =   1 
     c_2   =   2 
 в 
     f   x   y   =   c_1   *   x   +   c_2   *   y 

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

пусть   {  c_1  =  1  ;   c_2  =  2  }  
 в   f   x   y   =   c_1   *   x   +   c_2   *   y 

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

Функция   code   \  verb  +  isValidDate  +   проверка   правильности   даты   }   Bool 
 \  Begin  {  isValidDate  > 
 date   ::   Date   ->   isValidDate 
 &&   =   чч   >  =  0    &&   мм  =  0   &&   сс  >  0 
                  =   чч  <  24   &&   мм  <  60   &&   ss  <  60 
  где   (  hh  ,  mm  ,  ss  )   =   fromDate   date 
 \  end  {  code  } 
 обратите внимание   что   в   этом   случае   функция   перегруженная   ,   — это   \  verb  +  fromDate   ::   Date   ->   (  Int  ,  Int  ,  Int  )  +. 

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

Функция   (   isValidDate   проверяет   дата   >   ли   , действительна 

 isValidDate   ::   Date   -   >   Bool 
 >   isValidDate   date   =   чч  >=  0    &&   мм  >=  0   &&   сс  >  0 
 >                    &&   чч  <  24   &&   мм  <  60   &&   сс  <  60 
 >    где   =  чч  ,  мм  ,  сс  )   =   fromDate   date 

 Обратите внимание   что   в   этом   случае   функцией   перегруженной   ,   является   fromDate   ::   Date   ->   (  Int  ,  Int  ,  Int  )  . 

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

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

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

$search   =   массив  (  'a'  ,   'b'  ,   'c'  ,   'd'  ,   'e'  ); 
  $replacement   =   массив  (  'foo'  ,   'bar'  ,   'baz'  ,   'quux'  ); 

  $значение   =   0  ; 
  $другое значение   =   1  ; 
  $yetanothervalue   =   2  ; 

выровнено:

$search        =   массив  (  'a'  ,     'b'  ,     'c'  ,     'd'  ,     'e'  ); 
  $replacement   =   массив  (  'foo'  ,   'bar'  ,   'baz'  ,   'quux'  ); 

  $значение             =   0  ; 
  $другое значение      =   1  ; 
  $yetanothervalue   =   2  ; 

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

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

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

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

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

$search        =   массив  (  'a'  ,     'b'  ,     'c'  ,     'd'  ,     'e'  ); 
  $r   =   массив  (  'foo'  ,   'bar'  ,   'baz'  ,   'quux'  ); 

  $значение             =   0  ; 
     =   1  ; 
  $yetanothervalue   =   2  ; 

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

$search   =   массив  (  'a'  ,   'b'  ,   'c'  ,   'd'  ,   'e'  ); 
  $r   =   массив  (  'foo'  ,   'bar'  ,   'baz'  ,   'quux'  ); 

  $значение   =   0  ; 
  =   1  ; 
  $yetanothervalue   =   2  ; 

Пробел [ править ]

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

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

интервал   я  ; 
  for  (  я  =  0  ;  я  <  10  ;  ++  я  ){ 
     printf  (  "%d"  ,  я  *  я  +  я  ); 
  } 

против

ИНТ   я  ; 
  for   (  я   =   0  ;   я   <   10  ;   ++  я  )   { 
     printf  (  "%d"  ,   я   *   я   +   я  ); 
  } 

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

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

интервал       IX  ;        // Индекс для сканирования 
 длинной      суммы  массива ;       // Аккумулятор суммы 

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

интервал               IX  ;                // Индекс для сканирования 
 длинной      суммы  массива ;       // Аккумулятор суммы 

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

class   MyClass   { 
	 int   foobar  ( 
		 int   qux  ,   // первый параметр 
		 int   quux  );    // второй параметр 
	 int   foobar2  ( 
		 int   qux  ,   // первый параметр 
		 int   quux  ,   // второй параметр 
		 int   quuux  );    // третий параметр 
 }; 

См. также [ править ]

Ссылки [ править ]

  1. ^ «PEP 0008 — Руководство по стилю для кода Python» . python.org.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 3679A5232CA27EB26C73CB15C58BF88A__1718317560
URL1:https://en.wikipedia.org/wiki/Programming_style
Заголовок, (Title) документа по адресу, URL1:
Programming style - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)