Статистика

Участников проекта 105
Опубликовано статей 78
Отчет по карме. Топ 20

Новости блога

1 29.11.2013  Сегодня самым активным участникам newblog'а был выплачен доход с sape.
7 02.11.2012  Ура! Свешилось, нашему сайту дали тИЦ 10. Спасибо всем кто принимает участие в развитии нашего блога.
8 21.08.2012  Интеграция с sape.ru. Теперь каждый автор статей на newblog автоматически зарабатывает на рекламе.
Все новости

Топ 5 категорий

Программирование 46
Операционные системы 9
Базы данных 4
Туризм 2
Заметки 2

Последние 5 заметок (90)

gullyar - Закладки gullyar
gullyar - Ваша первая закладка
osadchaya - Закладки osadchaya
Ira0231188 - Закладки Ira0231188
Ira0231188 - Закладки Ira0231188

Ссылки

www.freedev.asia

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

03.10.2012 07:56 | Просмотров: 2036 | Доход: 53.39 руб. | Комментариев: 11
[Программирование] 
Рейтинг: 4.5/2


Кликните на один из вариантов чтобы проголосовать:
1) Я использую рациональный стиль

2

2) Я использую стиль Алмена

0

3) Я использую стиль GNU

1

Каждый программист сталкивается с понятием "стиль программирования", которое подразумевает определенный набор правил при оформлении исходного кода. До момента написания кода в команде, у программиста вырабатывается свой собственный стиль, который как правило формируется при чтении опеределенной документации. Влияние оказывает и сам язык программирования с которого человек начинает изучение. Когда дело доходит до написания одного программного продукта в команде, то часто программисты испытывают дискомфорт при чтении чужого кода. Наличие общего стиля программирования облегчает восприятие и поддержание исходного кода, написанного несколькими программистами, а также упрощает взаимодействие нескольких человек при разработке программного обеспечения. Далее я опишу какое оформление мне близко и чем я руководствуюсь при написании исходных кодов. Сразу оговорюсь что все описанное в статье не стоит принимать близко к сердцу, это лишь выводы основанные на моем опыте. И если вы следуете другим канонам - не расстраивайтесь :)

1) Фигурные скобки в управляющих конструкциях
Пожалуй самое значимое для восприятия оформление, от которого зависит удобство чтение кода - это расстановка "скобок" в управляющих конструкциях.  Я стараюсь придерживаться рационального стиля программирования, он же K&R или 1TBS. Это самый распространенный стиль программирования. В таком стили был написан язык "C". Им пользовались Керниген (Kernighan) и Ричи (Ritchie), авторы языка "C". Деннис Ричи даже назвал его "Единственно верный способ постановки скобки" ("The One True Brace Style", аббревиатуры 1TBS или OTBS).
 

<?php
if($condition){
    echo "newblog.kz";
    ...
}
?>

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

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

<?php
if($flag)
{
echo «Hello world!»;
}
?>


Как я уже сказал на мой взгляд такой стиль занимает слишком много полезного пространства.

Стиль GNU. Этого стиля придерживаются программисты фонда Free Software Foundation.
 

<?php
if($flag)
    {
        echo «Hello world!»;
    }
?>


Доводилось видеть программы написанные в таком стиле. При неумелом использовании полезное пространство съедается еще и по ширине и читать код становится неудобно.

2) Блоки в одно предложение.
Если результат условия невелик, то согласно рациональному стилю, его можно записать и в одну строчку.
 

<?php
if($condition) echo "newblog.kz";
?>



Мне очень не нравится когда записывают код так:
 

<?php
if($condition)
    echo "newblog.kz";
?>


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

3) Сокращенные конструкции.
php, C, java позволяют заменять условия if..else сокращенной конструкцией:
выражение_1 ? выражение_2 : выражение_3
Когда я вижу подобные конструкции в чужом коде, иногда хочется оторвать руки этому программисту(шутка). В общем я стараюсь избегать подобных сокращений. На мой взгляд чем проще, тем лучше! И если вы никому не хотите запудрить мозги, то лучше подобных конструкций не использовать.
 

4) Пробелы или табы?
Еще в том году я наткнулся на статью хабра, в которой было описание различий indentation и alignment. С тех пор так и использую табы для indentation и пробелы для alignment.
Пример:
 

//Использую пробелы
$var_name_site = "newblog";
$var_domain    = ".kz";


Для всего остального - табы. Для удобства выставляю в eclipse размер таба как 4 пробела.


© GM
| Комментировать статью |
  • WTP +711 (12.10.2012 17:33)
    Только GNU! Только хардкор!
    | Ответить |
    • WTP +711 (12.10.2012 17:34)
      Хотя лично я предпочитаю немножно не так писать. Мне больше нравится такой вариант:
      
      | Ответить |
      • WTP +711 (12.10.2012 17:35)
        if($flag)
        {
            echo «Hello world!»;
        }
        | Ответить |
        • GM +2587 (12.10.2012 17:43)
          "Алмеgnu" какой-то :)
          | Ответить |
        • Аноним 0 (08.07.2013 15:23)
          | Ответить |
      • WTP +711 (12.10.2012 17:39)
        if($flag)
            echo «Hello world!»;
        | Ответить |
      • WTP +711 (12.10.2012 17:40)
        if($flag)
        {
            echo «Hello world!»;
            if($flag)
            {
                echo «Hello world!»;
                if($flag)
                {
                    echo «Hello world!»;
                }
            }
        }
        | Ответить |
        • GM +2587 (12.10.2012 17:44)
          шикарные кавычки :P
          | Ответить |
          • WTP +711 (12.10.2012 17:46)
            Копипаст)
            Аффтару привет ;)
            | Ответить |
  • WTP +711 (12.10.2012 17:45)
    А вот по поводу сокращений типа :
       выражение_1 ? выражение_2 : выражение_3
    
    поддерживаю!
    Нечитаемо абсолютно. Особенно если это посреди строчки, длиной в 3 строки, вперемешку с html и не дай бог js :)
    А если такие сокращения еще и вложены друг в друга... тут уж точно в пору задуматься об отрывании рук и не только.
    | Ответить |
    • WTP +711 (12.10.2012 17:48)
      Имхо, для таких конструкций - оптимальней выяснять все значения переменных заранее в конструкциях типа приведенной мной выше со вложенностью, а потом тупо подставлять куда надо. И проще логика, и проще читается.
      | Ответить |