Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Голосование

    Какую CMS Вы предпочитаете

    AtomX
    Fapos CMS
    Drunya CMS
Последние комментарии
Автор: чайник, в новости:

Что такое API и для чего они нужны

Автор: HIshnik, в новости:

Классы в PHP для чайников

Автор: Аноним, в новости:

Написание простого вируса в блокноте

Автор: stream, в новости:

Создаем BB коды на PHP

Топ пользователей
Drunya
Репутация: 108
Сообщений: 3527
Сашка_из_Шебекино
Репутация: 87
Сообщений: 1803
boriska
Репутация: 65
Сообщений: 846
ARMI
Репутация: 46
Сообщений: 1858
BAH0
Репутация: 26
Сообщений: 544
Конечно, многие могут сказать что красивый код это бесполезная затея. Главное что бы работал как надо. Но я позволю себе не согласиться с этим заключением. Возможно некоторые настроены скептически, по отношению к этой затее, по тому что думают - "Зачем коду программы красота". Но видите ли, кодстайл придуман не для красоты, а для упрощения восприятия кода не вооруженным взглядом. Сейчас объясню, что я имею виду. Любая программа, независимо от ее предназначения, будет отлаживаться или модифицироваться. Возможно вами, а возможно и кем то другим. И, если код не имет должного вида, сделать это будет очень сложно. Например,в больших программах это сложно делать даже если соблюдены все правила, а если оне не соблюдены, то отладка или модификация превращается в настоящий ад для программиста. Попробую показать пару маленьких примеров.


 1 
 2 
<?php for($i=0;$i<3;$i++)if($i<1)echo'bla';echo'bla';?>
 1 
 2 
<?php $a=33*8-23/2*7+78;$b++;$a=$b-25/3;$b=$a-3*4/2+45;?>

Вот. Парочка примеров, в одну строчку. Легко разобрать что там делается и в какой момент времени, чему что равно? А ведь реальная прога может быть гораздо больше. Думаю сомнений в том что код стайл необходим не осталось. Но как правильно его соблюдать? Какие правила считаются общепринятыми и есть ли они вообще? Конечно есть. Есть набор правил,касательно отступов, комментариев, фигурных скобок и т.п. Пройдемся по каждому из них по-порядку.


ОТСТУПЫ
Отступы это пространство между смволами, а так же между левым краем(я бы сказал, краем файла) и началом символов в этой строке(то есть, не посредственно, самого кода). Тут все предельно просто, есть несколько правил, соблюдение которых, сделает ваш код намного понятнее и читабельнее. Самое, на мой взгляд, золотое правило это то, что каждый последующий уровень логической вложености кода должен отступать от лефого края на 4 пробела(один таб) больше. Или так: каждый следующий уроввень вложености должен отступать на 4 пробела больше от предыдущего(верхнего) уровня. Продемонстрирую:
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
<?php //тут любой код
if () {
    
//тут любой код
    
for () {
        
//тут любой код
        
while () {
            
//тут любой код
        
}
    }
}
?>

Как вы можете видеть, сначала я пишу весь код в плотную к левому краю. Затем открываю логический if и все что в него входит уже отделено от левого края пробелами. Далее в теле этого ifа у меня for, это тоже логический блок, и все что в него входит отступает еще на 4 пробела от левого края. В фор у меня вложен while и все что в нем будет сдвинуто еще на 4 пробела и так до бесконечности. Таким образом, беглым взглядом на код, можно понять что к чему относится. Если я вижу что код сдвинут, значит он находиться в теле какой то логической конструкции и я обязательно посмотрю, что это за конструкция и при каких условиях она выполняется. Кроме этого, это очень красиво, на мой взгляд. Взгляните сюда:
 1 
 2 
 3 
<?php if ()
echo 
'bla';
echo 
'bla';?>
Сколько раз напечатаеться слово "bla"? Как бы не очень удобно, да? Я думаю так гораздо красивее и понятнее
 1 
 2 
 3 
<?php if ()
    echo 
'bla';
echo 
'bla';?>
Хотя когда в условие if входит одна строка я делаю так
 1 
 2 
<?php if () echo 'bla';
echo 
'bla';?>

Теперь про отступы между символами. Если обратить внимание,можно заметить что я делаю отступ в один пробел после конструкций if, for, while и т.д. А так же после описания условия в них(перед фигурногй скобкой). Хорошим тоном так же считается пропел по обеим сторонам арифметических знаков, запятых, точек и т.д. Например как в этом примере:
 1 
 2 
<?php $a $b $c $e;
$word 'helo' $world;?>
Не правда ли симпотично и понятно? Думаю пора переходитьк следующему пункту)



ФИГУРНЫЕ СКОБКИ
Сразу покажу варианты их использования и скажу какие, на мой взгляд верные, а какие нет.

Вариант 1
 1 
 2 
 3 
<?php if () {
    
//тут код
}?>

Вариант 2
 1 
 2 
 3 
 4 
<?php if () 
{
    
//тут код
}?>

Вариант 3
 1 
 2 
 3 
 4 
<?php if () 
    {
    
//тут код
    
}?>

Вариант 4
 1 
 2 
 3 
 4 
<?php if () 
    {
        
//тут код
    
}?>

Вариант 3 и 4 сразу забудте. Это ужос. Для таких конструкций как if, for, while и прочих, используйте вариант номер 1. А вот для описания функций и классов, янапример использую то же первый вариант, но не вижу так же препятствий для использования и варианта номер 2. Он в полне для этого годится.



КОММЕНТАРИИ
Комментарии пишуться не для машин, а для людей и они должны не тупо констатировать назначение каждой строки кода, а говорить о назначнии определенных его блоков. Я пытаюсь сказать что не надо комментировать каждую строку, это тупо. И так видно что она делает(за исключением редких случаев). Вот
 1 
 2 
 3 
 4 
 5 
 6 
<?php $a 1//присваиваем перемменой а значение один
$b =6;  //присваиваем переменной b значение 6
//цикл по $i от одного до шести
for ($i 1$i <= $b$i++) {
    
$a $a $i//умножаем а на i
}?>
 1 
 2 
 3 
 4 
 5 
 6 
<?php //находим факториал числа b
$a 1;
$b =6;
for (
$i 1$i <= $b$i++) {
    
$a $a $i;
}
?>
Как видите в первом случае, мы комментили все подряд, но истинная цель кода ускользнула, а во втором варианте, мы сделали всего один коммент и все стало ясно. Если конечно тот кто читает знает что такое факториал), хотя и это можно посмотреть в нете. Так же в комментировании нуждаются участки с нестандартным подходом и те над которыми вы долго думали, например какие то сложные решения. По тому как, если через время вы будете сами смотреть на эти места, то не вспомните почему вы сделали именно так. Кроме этого есть общепринятые правила комментирования классов и функций. Думаю, когда вы начнете во всю писать классы, моя помощь в комментариях не понадобится, в противном случае, это будет более чем странно. А вот про функции немного расскажу. Я сам всегда так делаю и жить становится на много проще. Комментарий к функции должен содержать краткое описание того что она делает и список параметров. Если функция что-то возвращает, это то же надо указать. На основе правильно сделаного коммента к функции, затем можно сгенерировать документацию. Так делают в серьезных конторах, серьезные дядьки.
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
<?php /**
 * Грабим корованы и складываем награбленное
 * в перемменые. Все суммируем и возвращаем
 * для последующей продажи на базаре
 *
 * @param string $a
 * @param array $b
 * @return boolean 
 */
function corovany($a$b) {
    
//тело функции
}?>
Не правда ли, красиво? Мы знаем что делает функция, что и в каком формате передавать и что она может возвращать. Очень удобно, особенно, длядругих программистов, которые будут работать с моим кодом. При перечислении параметров, первым идет ключевое слово @param а затем указываеться тип переменной. Типы могут быть array, integer, boolean, string, mixed, float - массив, число, логическое истина/лож, строка, смешаное, число с плавающей точкой соответственно. Ну а дальше указываеться сама переменная. Как вы могли заметить, в каком порядке переменные передаются в функцию, в таком они и описываются в комменте. Ну с @return я думаю и так все понятно.

Несколько правил
* Комментируйте не то что вы делаете, а зачем
* Комментируйте. Это полезно
* Не надо комментировать очевидное
* Комментируйте то, что действительно в этом нуждается




ЛОГИЧЕСКАЯ ВЛОЖЕННОСТЬ
Тут все просто, я приведу пример и все станет ясно. В объяснении это по моему вообще не нуждаеться.
 1 
 2 
 3 
 4 
 5 
<?php function some_func() {
    if (
$a) {
        
//вся функция
    
}
}
?>
Нафига пихать все тело функции в иф. Это, по меньшей мере, не красиво. Тогда лучше так
 1 
 2 
 3 
 4 
 5 
 6 
<?php function some_func() {
    if (!
$a) {
        return;
    }
    
//вся функция
}?>
Не правда ли намного лучше, а если вы вспомните что я говорил об однострочных условиях, то сделаете так
 1 
 2 
 3 
 4 
<?php function some_func() {
    if (!
$a) return;
    
//вся функция
}?>



ИМЕНА ПЕРЕМЕННЫХ И ФУНКЦИЙ
На самом деле, не так важно как выбудете давать имена своим переменным, главное, что бы система, которой вы следуете была однообразна и постоянна. Если при написании программы, вы начали называть переменные каким то образом, то продолжайте их называть, таким же образом во всей программе. Это правило хорошего тона. Например я люблюназывать переменные с маленькой буквы разделяя слова подчеркиванием. А функции, то же, с маленькой буквы, но каждое новое слово пишу слитно с большой буквы.
 1 
 2 
<?php $some_variable 1;
function 
someFunction();?>





ИТОГИ
Соблюдайте хороший код стайл, поверте, вам самим будет намного приятнее смотреть и читать свой код, если вы научитесь соблюдать эти простые правила, а программисты, которые будут работать с вашим кодом, будут на вас молиться. Если что-то осталось не ясным, спрашивайте тут или на форуме:)
Правила красивого кода

Теги: code style; красивый код; правильный код; комментарии; PHP;
Источник: Drunya
Автор: Drunya
Категория: PHP
Просмотров: 2851
Комментариев: 0

Сейчас online: 17. Зарегистрированных: 0. Гостей: 17.
-->