Голосование
Какую CMS Вы предпочитаете
AtomX
Fapos CMS
Drunya CMS
Топ новостей
- Генератор аватарок в стиле пиксель-арт
- Скачать Fapos CMS 1.1.8 Бесплатно
- Цунами в Японии. Последствия.
- Предварительная инфа о FAPOS 1.1.9. Часть 2
- Описание версии CMS Fapos 0.9.9
- Новая версия Fapos 1.3
- Половина россиян не смогла отличить легальный контент
- Что есть Fapos CMS
- Убийца Apache у вас на пороге
- Открытое тестирование Fapos 0.9.9
Последние комментарии
Топ пользователей
Сайты на AtomX CMS
Конечно, многие могут сказать что красивый код это бесполезная затея. Главное что бы работал как надо. Но я позволю себе не согласиться с этим заключением. Возможно некоторые настроены скептически, по отношению к этой затее, по тому что думают - "Зачем коду программы красота". Но видите ли, кодстайл придуман не для красоты, а для упрощения восприятия кода не вооруженным взглядом. Сейчас объясню, что я имею виду. Любая программа, независимо от ее предназначения, будет отлаживаться или модифицироваться. Возможно вами, а возможно и кем то другим. И, если код не имет должного вида, сделать это будет очень сложно. Например,в больших программах это сложно делать даже если соблюдены все правила, а если оне не соблюдены, то отладка или модификация превращается в настоящий ад для программиста. Попробую показать пару маленьких примеров.
Вот. Парочка примеров, в одну строчку. Легко разобрать что там делается и в какой момент времени, чему что равно? А ведь реальная прога может быть гораздо больше. Думаю сомнений в том что код стайл необходим не осталось. Но как правильно его соблюдать? Какие правила считаются общепринятыми и есть ли они вообще? Конечно есть. Есть набор правил,касательно отступов, комментариев, фигурных скобок и т.п. Пройдемся по каждому из них по-порядку.
ОТСТУПЫ
Отступы это пространство между смволами, а так же между левым краем(я бы сказал, краем файла) и началом символов в этой строке(то есть, не посредственно, самого кода). Тут все предельно просто, есть несколько правил, соблюдение которых, сделает ваш код намного понятнее и читабельнее. Самое, на мой взгляд, золотое правило это то, что каждый последующий уровень логической вложености кода должен отступать от лефого края на 4 пробела(один таб) больше. Или так: каждый следующий уроввень вложености должен отступать на 4 пробела больше от предыдущего(верхнего) уровня. Продемонстрирую:
Как вы можете видеть, сначала я пишу весь код в плотную к левому краю. Затем открываю логический if и все что в него входит уже отделено от левого края пробелами. Далее в теле этого ifа у меня for, это тоже логический блок, и все что в него входит отступает еще на 4 пробела от левого края. В фор у меня вложен while и все что в нем будет сдвинуто еще на 4 пробела и так до бесконечности. Таким образом, беглым взглядом на код, можно понять что к чему относится. Если я вижу что код сдвинут, значит он находиться в теле какой то логической конструкции и я обязательно посмотрю, что это за конструкция и при каких условиях она выполняется. Кроме этого, это очень красиво, на мой взгляд. Взгляните сюда:
Сколько раз напечатаеться слово "bla"? Как бы не очень удобно, да? Я думаю так гораздо красивее и понятнее
Хотя когда в условие if входит одна строка я делаю так
Теперь про отступы между символами. Если обратить внимание,можно заметить что я делаю отступ в один пробел после конструкций if, for, while и т.д. А так же после описания условия в них(перед фигурногй скобкой). Хорошим тоном так же считается пропел по обеим сторонам арифметических знаков, запятых, точек и т.д. Например как в этом примере:
Не правда ли симпотично и понятно? Думаю пора переходитьк следующему пункту)
ФИГУРНЫЕ СКОБКИ
Сразу покажу варианты их использования и скажу какие, на мой взгляд верные, а какие нет.
Вариант 1
Вариант 2
Вариант 3
Вариант 4
Вариант 3 и 4 сразу забудте. Это ужос. Для таких конструкций как if, for, while и прочих, используйте вариант номер 1. А вот для описания функций и классов, янапример использую то же первый вариант, но не вижу так же препятствий для использования и варианта номер 2. Он в полне для этого годится.
КОММЕНТАРИИ
Комментарии пишуться не для машин, а для людей и они должны не тупо констатировать назначение каждой строки кода, а говорить о назначнии определенных его блоков. Я пытаюсь сказать что не надо комментировать каждую строку, это тупо. И так видно что она делает(за исключением редких случаев). Вот
Как видите в первом случае, мы комментили все подряд, но истинная цель кода ускользнула, а во втором варианте, мы сделали всего один коммент и все стало ясно. Если конечно тот кто читает знает что такое факториал), хотя и это можно посмотреть в нете. Так же в комментировании нуждаются участки с нестандартным подходом и те над которыми вы долго думали, например какие то сложные решения. По тому как, если через время вы будете сами смотреть на эти места, то не вспомните почему вы сделали именно так. Кроме этого есть общепринятые правила комментирования классов и функций. Думаю, когда вы начнете во всю писать классы, моя помощь в комментариях не понадобится, в противном случае, это будет более чем странно. А вот про функции немного расскажу. Я сам всегда так делаю и жить становится на много проще. Комментарий к функции должен содержать краткое описание того что она делает и список параметров. Если функция что-то возвращает, это то же надо указать. На основе правильно сделаного коммента к функции, затем можно сгенерировать документацию. Так делают в серьезных конторах, серьезные дядьки.
Не правда ли, красиво? Мы знаем что делает функция, что и в каком формате передавать и что она может возвращать. Очень удобно, особенно, длядругих программистов, которые будут работать с моим кодом. При перечислении параметров, первым идет ключевое слово @param а затем указываеться тип переменной. Типы могут быть array, integer, boolean, string, mixed, float - массив, число, логическое истина/лож, строка, смешаное, число с плавающей точкой соответственно. Ну а дальше указываеться сама переменная. Как вы могли заметить, в каком порядке переменные передаются в функцию, в таком они и описываются в комменте. Ну с @return я думаю и так все понятно.
Несколько правил
* Комментируйте не то что вы делаете, а зачем
* Комментируйте. Это полезно
* Не надо комментировать очевидное
* Комментируйте то, что действительно в этом нуждается
ЛОГИЧЕСКАЯ ВЛОЖЕННОСТЬ
Тут все просто, я приведу пример и все станет ясно. В объяснении это по моему вообще не нуждаеться.
Нафига пихать все тело функции в иф. Это, по меньшей мере, не красиво. Тогда лучше так
Не правда ли намного лучше, а если вы вспомните что я говорил об однострочных условиях, то сделаете так
ИМЕНА ПЕРЕМЕННЫХ И ФУНКЦИЙ
На самом деле, не так важно как выбудете давать имена своим переменным, главное, что бы система, которой вы следуете была однообразна и постоянна. Если при написании программы, вы начали называть переменные каким то образом, то продолжайте их называть, таким же образом во всей программе. Это правило хорошего тона. Например я люблюназывать переменные с маленькой буквы разделяя слова подчеркиванием. А функции, то же, с маленькой буквы, но каждое новое слово пишу слитно с большой буквы.
ИТОГИ
Соблюдайте хороший код стайл, поверте, вам самим будет намного приятнее смотреть и читать свой код, если вы научитесь соблюдать эти простые правила, а программисты, которые будут работать с вашим кодом, будут на вас молиться. Если что-то осталось не ясным, спрашивайте тут или на форуме
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';?>
1
2
3
<?php if ()
echo 'bla';
echo 'bla';?>
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) {
//тело функции
}?>
Несколько правил
* Комментируйте не то что вы делаете, а зачем
* Комментируйте. Это полезно
* Не надо комментировать очевидное
* Комментируйте то, что действительно в этом нуждается
ЛОГИЧЕСКАЯ ВЛОЖЕННОСТЬ
Тут все просто, я приведу пример и все станет ясно. В объяснении это по моему вообще не нуждаеться.
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
Теги: code style; красивый код; правильный код; комментарии; PHP;
Источник: Drunya
Сейчас online: 51. Зарегистрированных: 1. Гостей: 50.
AtomX 2.8 Beta - Новая версия бесплатной CMS
AtomX 2.8 Beta - Новая версия бесплатной CMS
Программирование - что может быть проще.
Программирование - что может быть проще.
AtomX 2.8 Beta - Новая версия бесплатной CMS
AtomX 2.8 Beta - Новая версия бесплатной CMS
Написание простого вируса в блокноте
Что такое API и для чего они нужны
Классы в PHP для чайников
Написание простого вируса в блокноте