Перейти к содержимому

Реферальная программа Мегаплана


Стили кодирования в PHP

#1 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 22 Июль 2009 - 23:14

Хочу предложить формучанам немного расширить грамотность и понятие про правильный и читабельный код в PHP, и вообщем во всех языках программирования, для новичков, и возможно даже для умелых. Предлагаю сильно не отклонятся от содержания книги "Профессиональное программирование на PHP" и писать статьи, обсуждать темы вот по такому списку:
* Выбор правильного стиля;
* Форматирование и компоновка кода;
* Именование;
* Предотвращение запутанности кода;

Что ж, пожалуй я начну ;)

Выбор правильного стиля.
Независимо от уровня профессионализма, каждый программист имеет свой стиль кодирования. Но независимо от того, пишет этот код профессионал или новичек, стиль должен быть понятным и читабельным. Возможно некоторые программисты со мной не согласятся, но стиль должен быть примерно один/два/три. Почему? Потому что возможно после вас, кто-то будет дорабатывать/перерабатывать скрипт. Так же для примера послужит создание движка сайта несколькими программистами, при том, что каждый будет использовать свой стиль.
В PHP, да и в других языках существуют 3 стандарта - 3 основных стиля программирования: BSD, GNU и K&R. Немножко подробней...
- BSD-стиль, в котором фигурные скобки открываются в следующей строке, после условного оператора и выравниваются по ключевому слову:
if ($var)
{
// оператор
}

- GNU-стиль, в котором фигурные скобки открываются в следующей за условным оператором строке, а отступы устанавливаются так, чтобы фигурные скобки были на ровном расстояние от внешних и внутренних отступов:
if ($var)
{
// оператор
}

- K&R-стиль, в котором скобка открывается в той же строке, что и ключевое слово(после условного оператора), а закрывается в том месте, где начинается ключевое слово:
if ($var) {
for ($i=0; $i++<10;) {
echo $i;
}
}

Как говорит автор книги: "Не важно, какой стиль выбрать; важно - строго ему придерживаться!". Так же в коде можно немного смешать стили. Так в функциях можно использовать стиль BSD, а в условиях и циклах K&R.
Спасибо за внимание, жду поправок и дополнений. :)
С уважением, Богдан.

Автор книги, с которой была взята некоторая информация: Джордж Шлосснейгл.

 

 

  • 0


#2 FordogeN

FordogeN
  • Пользователь
  • 1 414 сообщений
  • Репутация: 0

Отправлено 23 Июль 2009 - 12:05

хм... Дык я оказуецо юзаю GNU стиль)
  • 0

Как настроить выдержку и диафрагму зеркального фотоаппарата



#3 Troy

Troy
  • Пользователь
  • 18 сообщений
  • Репутация: 0

Отправлено 23 Июль 2009 - 18:18

я в K&R пишу , где-то статью видел , там больше информации
  • 0

#4 phpuser

phpuser
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 23 Июль 2009 - 20:07

Я тоже юзаю GNU стиль.
В той книге откуда была "вырезана" данная статья ещё оповещается следующее:
Стиль K&R считается у большинства программистов единственно верным.
Я с этим не согласен а ТЫ??
  • 0
Вникаю в тему создания сайтов...


#5 Евгений

Евгений
  • Пользователь
  • 481 сообщений
  • Репутация: 0

Отправлено 23 Июль 2009 - 20:10

я в K&R :) раньше в BSD писал
  • 0

#6 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 28 Июль 2009 - 08:26

К управляющим конструкциям (условиям и циклам) применяю стиль Кернигана и Ритчи, а к функциям BSD. Только вот не знаю как лучше, если в условие есть else. По правилам стиля K&R последняя фигурная дужка должна выравниваться по ключевому слову (else), но так получается некрасиво:
if (!isset($arr)) {
exit;
} else {
for ($i=0; $i++<count($arr);) {
echo "$i";
}
}


Как вы пишите код с условием?

2*phpuser* Статья не была тупо вырезана, она была "выжата" от некоторой неважной информации и передана своими словами, как думает автор - Я)).
На счет того, что стиль K&R единственный правильный тоже не согласен. Думаю так, как предложил Джордж Шлосснейгл, лучше всего ;D
  • 0


#7 Евгений

Евгений
  • Пользователь
  • 481 сообщений
  • Репутация: 0

Отправлено 28 Июль 2009 - 09:28

if (!isset($arr)) {
exit;
}
else {
for ($i=0; $i++<count($arr);) {
echo "$i";
}
}

  • 0

#8 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 28 Июль 2009 - 09:33

Форматирование и компоновка кода
- Введение отступов
- Длина строки
- Используем пустое пространство
- SQL запросы


- Введение отступов
Начнем с того, что PHP нечувствителен к отступам, точнее к лишним отступам, так что смело можно ставить столько пробелов, сколько душа желает. Но зачем это? Отступы используют для улучшения читабельности кода. Рассмотрим следующий код:
$arr = array("first" => "Google", "second" => "Yandex", "third" => array("Rambler", "MailRu"));

Он плохо читается, но если сделать так:
$arr = array("first" => "Google",
"second" => "Yandex",
"third" => array("Rambler",
"MailRu")
);

Код стал значительно читабельным, и это благодаря отступам. С примеров приведённых выше можно сделать выводы.
Для улучшения читабельности кода используют табуляцию. Есть Жесткая и Мягкая табуляции. Жесткая табуляция это кнопка "Tab" на вашей клавиатуре, а Мягкая - обычный пробел. Лучше использовать мягкую табуляцию, поскольку с первой могут возникнуть проблемы отображения кода в разных редакторах, браузерах. Ширина Мягкой табуляции равна четырем пробелам и делает код читабельным и довольно вместимым. Пример кода без табуляции:
if (!is_array($arr)) {
exit;
} else {
for ($i=0; $++<count($arr);) {
echo $arr[$i]."<br />";
}
}

С табуляцией:
if (!is_array($arr)) {
exit;
} else {
for ($i=0; $++<count($arr);) {
echo $arr[$i]."<br />";
}
}

Второй код стал читабельным и понятным. Так что уважайте себя и других программистов, делайте отступы и творите красивый код :)

- Длина строки
По провилам, длина строки не должна превышать 80 символов. Почему? Потому что размер стандартного блокнота вмещается 80 символов, после чего появляется окно прокрутки. Так же в любом разрашении ваш код будет выглядеть таким, как он должен быть, без автоматических переносов строки.
  • 0


#9 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 28 Июль 2009 - 09:44

2*Евгений* угу, хороший вариант :) Мне больше нравится:
if (!is_array($arr)) {
exit;
} else {
for ($i=0; $++<count($arr);) {
echo $arr[$i]."<br />";
}
}

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


#10 FordogeN

FordogeN
  • Пользователь
  • 1 414 сообщений
  • Репутация: 0

Отправлено 28 Июль 2009 - 12:02

phpuser, та мне до одного места мнение других)) делаю так, чтоб мне нравилось!


  • 0

Как настроить выдержку и диафрагму зеркального фотоаппарата



robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru