БлогNot. Отступать есть куда!

Отступать есть куда!

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

На самом деле, пожалуй, всё равно, какого из стилей придерживаться, лишь бы придерживаться. Нередко программист придумывает и собственный способ вложения блоков. Есть ли какие-то "официальные" стили? Конечно. Вот основные из них для моего любимого размера отступа (Indentation), равного 1 пробелу и на примере синтаксиса PHP (отступ перед каждой строкой Starting indentation равен нулю).

Исходный плохо форматированный текст:

<?php

function fun ($a,$b,$c) {

operator1; operator2; operator3;

return $val; }

while (condition) operator;
for (;;) { operator1; operator2; }
do { operator1; operator2; operator3; 
} while (condition);
if (cond1) { operator1; operator2;
 if (cond11) {operator11;operator12;
 }else if (cond12) operator13; 
 else operator14;
 } else if (cond2)  { operator1; operator2; }
else { operator1; operator2; } 
switch ($a) {
 case 1: operator1; operator2; break;
 case 2:operator1; operator2; break;
 default: operator1; operator2; break;
}
$b = $a ?
'yes' : 'no';

?>

K&R style (One true brace style) - мой стиль наиболее похож на этот, только else if я всё же не пишу в одной строке с закрывающими скобками. Со времён бессмертной книги Кернигана и Ритчи известен как "Единственно Правильный Скобочный Стиль".

<?php
function fun($a, $b, $c) {
 operator1;
 operator2;
 operator3;
 return $val;
}
while (condition)
 operator;
for (;;) {
 operator1;
 operator2;
}
do {
 operator1;
 operator2;
 operator3;
} while (condition);
if (cond1) {
 operator1;
 operator2;
 if (cond11) {
  operator11;
  operator12;
 } else if (cond12)
  operator13;
 else
  operator14;
} else if (cond2) {
 operator1;
 operator2;
} else {
 operator1;
 operator2;
}
switch ($a) {
 case 1:
  operator1;
  operator2;
  break;
 case 2:
  operator1;
  operator2;
  break;
 default:
  operator1;
  operator2;
  break;
}
$b = $a ? 'yes' : 'no';
?>

Allman style (BSD style) - так писал программист Олман утилиты для BSD. Фактически, это сегодня стандарт... с кучей лишних строк под скобочки :)

<?php
function fun($a, $b, $c)
{
 operator1;
 operator2;
 operator3;
 return $val;
}
while (condition)
 operator;
for (;;)
{
 operator1;
 operator2;
}
do
{
 operator1;
 operator2;
 operator3;
} while (condition);
if (cond1)
{
 operator1;
 operator2;
 if (cond11)
 {
  operator11;
  operator12;
 }
 else if (cond12)
  operator13;
 else
  operator14;
}
else if (cond2)
{
 operator1;
 operator2;
}
else
{
 operator1;
 operator2;
}
switch ($a)
{
 case 1:
  operator1;
  operator2;
  break;
 case 2:
  operator1;
  operator2;
  break;
 default:
  operator1;
  operator2;
  break;
}
$b = $a ? 'yes' : 'no';
?>

Whitesmiths style - назван в честь Whitesmiths C, одного из первых компиляторов с языка С, отличается уродливым расположением открывающих скобочек :)

<?php
function fun($a, $b, $c)
 {
 operator1;
 operator2;
 operator3;
 return $val;
 }
while (condition)
 operator;
for (;;)
 {
 operator1;
 operator2;
 }
do
 {
 operator1;
 operator2;
 operator3;
 } while (condition);
if (cond1)
 {
 operator1;
 operator2;
 if (cond11)
  {
  operator11;
  operator12;
  }
 else if (cond12)
  operator13;
 else
  operator14;
 }
else if (cond2)
 {
 operator1;
 operator2;
 }
else
 {
 operator1;
 operator2;
 }
switch ($a)
{
 case 1:
  operator1;
  operator2;
  break;
 case 2:
  operator1;
  operator2;
  break;
 default:
  operator1;
  operator2;
  break;
}
$b = $a ? 'yes' : 'no';
?>

GNU style - почти то же, что Уайтсмитс, но скобки расположены на собственном отступе, а не на одном уровне с операторами блока (при моих настройках этого отдельного отступа не будет видно). Стиль используется во всех исходниках проекта GNU.

<?php
function fun($a, $b, $c)
{
 operator1;
 operator2;
 operator3;
 return $val;
}
while (condition)
 operator;
for (;;)
{
 operator1;
 operator2;
}
do
{
 operator1;
 operator2;
 operator3;
} while (condition);
if (cond1)
{
 operator1;
 operator2;
 if (cond11)
 {
  operator11;
  operator12;
 }
 else if (cond12)
  operator13;
 else
  operator14;
}
else if (cond2)
{
 operator1;
 operator2;
}
else
{
 operator1;
 operator2;
}
switch ($a)
{
 case 1:
  operator1;
  operator2;
  break;
 case 2:
  operator1;
  operator2;
  break;
 default:
  operator1;
  operator2;
  break;
}
$b = $a ? 'yes' : 'no';
?>

 Статья об отступах в англоязычной Вики - ещё больше стилей!

 Проверь и отформатируй свой скрипт на PHP в любом из основных стилей


теги: список памятка программирование php форматы

23.03.2017, 16:04; рейтинг: 2291