Как стать автором
Обновить

Комментарии 133

Вообще мне ближе второй вариант, но код из примера я бы написал так:

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

т.е. если результат условия невелик, я пишу его в одну строчку
В данном случае лучше вообще без скобок. А вообще третий, IMHO, читается лучше, когда вложенных условий много, а редактор не Zend Studio.
когда вложенных условий много — код плохой.
ну допустим и плохой, но не всегда можно этого избежать…
постараться можно :)
Вариант без скобок может порождать ошибки, например захочешь вставить еще один оператор и забедушь поставить фигурные скобки. Поэтому я всегда пишу скобки, даже если там один оператор.
Если писать в одну строчку, то зачем там скобки? Или Вы этот второй оператор вставите на той-же строке? Фигурные скобки с момента своего появления были предазначены для ограничения блоков кода, а один оператор блоком не является. Хотя мышление у всех разное, возможно кому-то действительно трудно без них обходиться и тогда для совместимости стоит поставить.
А как на это в данном случае влияет Zend Studio? :) Там можно настроить форматирование и под такой стиль.
ну тогда уж
<?php if ($flag)echo «Hello world!»; ?>
Может тогда уж
<?=($flag? «Hellow world!»:)?>
Тут все таки про скобки разговор…
В php 6 этого не будет
Можно источник, я просто сам точно не помню где читал но там было написано что альтернативные синтаксические конструкции останутся.
речь не об алернативных конструкциях, а о PHP short tags, <? и ?> — с версии 5.3 они уже будут недоступны…
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
это парсер так обработал, ниже я написал правильный вариант
тогда наверное всё-таки вот так: <?=($flag? «Hellow world!»:«»)?>
Тогда уже и круглые скобки убрать нужно :)
Круглые скобки — просто моя привычка ^__^
Тогда уж
$flag? print('hello world!'): null;

p.s. в php 5.3+
станет возможна конструкция ?:, чего и жду с нетерпением )
Конкретно со скобками: если в блоке 1 строчка, то стиль #1, если много, то как у вас :) Так компактнее, а без скобок на 1 строчку, имхо, несколько менее читабельно.
Вообще мне ближе второй вариант, но код из примера я бы написал так:

<? php

if ( $flag ) { echo «Hello world!»; }

?>

т.е. если результат условия невелик, я пишу его в одну строчку
Я пользуюсь рацио (KR), т.к. он очень компактен. В огромных приложениях на Java это вообще спасает, а в PHP у меня — просто привычка.
<? php
if($flag)
{
echo «Hello, World!»;
}
?>

так пишу я, независимо от длины условия!
<? php
if($flag)
{
echo «Hello, World!»;
}
?>
вот так т.е.!
заключай код в
<_quote>
перед echo «Hello, World!»; ставлю табуляцию!
Существует много рекомендаций к написанию кода. В разных проектах могут быть разные варианты использованию расстановок скобок, табуляций и пр. Если очень хотеть, можно писать любым стилем. Вообще, когда правишь код чего-либо, лучше придерживаться стиля этого кода в независимости от личных предпочтений.

Мне больше нравится рациональный стиль, с обязательным написанием фигурных скобок.
при чем тут ява?
да ладно, пусть хабрачеловек тоже свой вариант выскажет ;)
Это свод правил(рекомендаций) оформления java кода.
просто он не понял что мы пхп обсуждаем, хотя почему бы и нет — давай и другие языки обсудим. в чем проблема?
Для c-подобных языков оформление кода примерно одинаковое. А вот с другими — типа python, ruby — там оформление является частью языка…
это я понял
Ну я к тому, что создатель технологии обычно предоставляет гайдлайны. У самого PHP, как мне помнится их нет, зато есть например framework.zend.com/manual/en/coding-standard.html — если бы я писал на PHP, я бы пользовался ими. Хотя не знаю, как там у других фреймворков.
Вот! Человеческий подход!

Мне больше по душе указанный выше ZF Coding Standard (то есть, #1 из топика), но и PEAR'овский тоже не плох.

И еще раз соглашусь с однохабрянами выше — на фигурных скобках экономить грЕшно.

PS: в Zend Studio / Eclipse PDT шикарный форматер кода (Shift-Ctrl-F). Шикарность — в его гибчайшей и обширнейшей настройке.
Стиль не такой:
<? php
if($flag)
{
echo «Hello world!»;
}
?>* This source code was highlighted with Source Code Highlighter.

а такой, с табуляцией:
<? php
if($flag)
{
    echo «Hello world!»;
}
?>* This source code was highlighted with Source Code Highlighter.
как раз таки и такой, один из вариантов
IMHO: если не делать вообще отступов, то это уже не стиль, а каша. Что будет при большой вложенности?
Это я про Стиль Алмена
Пишу вторым стилем (BSD) — причем обычно около первой открывающей скобки пишу кратенький коммент (если это ф-я, или куча вложенных if`ов)
я стараюсь использовать такой прием (для вложенных условий, например):

if($flag)
{
  echo «Hello world!»;
  if($flag2)
  {
    echo «Hello, world2!»;
  }
} // end off if($flag)

ну Вы поняли суть думаю…
понял ) в моем случае выглядит так

if($lala)
{ //толи девочка
echo(«девочка»);
      if($lala2)
      { //а толи варенье
      echo(«варенье»);
      }
}

тоесть блоки табулятся вместе с if`ами. Если блок большой, отступается еще и пустыми строками перед if и после закрывающей скобки
А мне очень нравиться notepad++ при выделении одной скобки можно сразу перепрыгнуть на открывающую/закрывающую через ctr+b очень удобно :) Сам пишу первым стилем.
да кстати… а еще очень удобна просто подсветка скобок, например если курсор около открывающей скобки, то редактор подсвечивает закрывающую. Плюс возможность этот блок свернуть, чтобы глаза не мазолил. (сам пользую quanta+, но в последнее время TextWrangler — в нем этого очень не достает)
Nusphere PHPEd
к сожалению, для мака его нет
textmate, o!
Спасибо :)
да кстати… а еще очень удобна просто подсветка скобок, например если курсор около открывающей скобки, то редактор подсвечивает закрывающую. Плюс возможность этот блок свернуть, чтобы глаза не мазолил. (сам пользую quanta+, но в последнее время TextWrangler — в нем этого очень не достает)
да кстати… а еще очень удобна просто подсветка скобок, например если курсор около открывающей скобки, то редактор подсвечивает закрывающую. Плюс возможность этот блок свернуть, чтобы глаза не мазолил. (сам пользую quanta+, но в последнее время TextWrangler — в нем этого очень не достает)
да кстати… а еще очень удобна просто подсветка скобок, например если курсор около открывающей скобки, то редактор подсвечивает закрывающую. Плюс возможность этот блок свернуть, чтобы глаза не мазолил. (сам пользую quanta+, но в последнее время TextWrangler — в нем этого очень не достает)
балин, извиняюсь… думал, что кнопка не нажималась :)
Я пишу в стиле:

Операторы — слитно с условием, фигурные скобки отделены пробелом, и сейчас стараюсь все операторы выносить на новую строку, гораздо удобнее в плане когда нужно что-то добавить, например print_r() какой-нибудь или var_dump(), при отладке и т.п., раньше когда писал слитно — приходилось переформатировать код на несколько строк, добавлять необходимую отладку, а потом когда отладка не нужна — убирать ее и запихивать код обратно в одну строку… в общем лучше уж сразу :)
Тьфу, что-то меня порезало :)

Использую рациональный стиль. Как раз потому, что он является рациональным.
У многих есть мнение, что он менее понятен, чем, например, стиль Альмена. Но это вопрос привычки. У приверженцев таких проблем нет. Другой вопрос в том, что ваш код также должны легко читать и другие. Но эти другие прежде всего те, кто с вами работает и у вас должен быть единый стиль. Поэтому и в этом случае проблем не должно быть. Другое дело, если коллектив решил использовать что-то другое, тогда ничего не остается как придерживаться пути большинства, если, конечно, не удалось переубедить.
Договоренность об оформлении кода, если мне не изменяет память, называется техническими директивами, которые собственно ради того что вы написали и используются, чтобы любой из команды разработчиков соот-щего проекта мог не ломая глаза прочитать то, что написали его коллеги.
Никто и не спорит, что это все должно быть в ТЗ записано.
ТЗ — это техническое задание, это другое, оно описывает то что хочет заказчик от исполнителя, а технические директивы — это внутренняя договоренность разработчиков между собой.
Я тоже использую рациональный, перешел на него благодаря Coding Conventions в Яве.
Жаль, что таких же правил нет и в других языках, сильно облегчает жизнь программистам.
<? php
if ($flag) {
    echo «Hello world!»;
}
?>
Я придерживаюсь первого варианта, хотя, это уже дело привычки каждого. Главное чтобы код был читабельным, и не только для себя.
Всегда пишу а-ля Керниган-Ритчи. Для меня весьма наглядно. и jEdit в этом помогает.
Солидарен с автором топика. И хотя логически верхняя скобка, занимающая строку информативно избыточна при табуляции, однако ее отсутствие меня дезориентирует. Правда, css я всегда я пишу в рациональном стиле (еще бы).
<? php

if($flag)
{
    echo «Hello, World!»;
}

?>


писал как и автор, только еще всегда ентеры перед началом и перед концом…
а счас пишу так:

///
/// This Class Makes Mega Function
///
public class SuperFlag
{

    //Writing Hello To World Stream
    private void MakeHello()
    {
        if ($flag)
        {
            Response.Write («Hello, World!»);
        }
    }

}

на C# перешел года 2 назад…

<? php

if ($condition) {
    // @todo write something
}

Закрывающий ?> не ставлю, если конечно не шаблон native php, а если он, то еще и альтернативный синтаксис:
<&php if ($condition): ?>
    <sometag arg=«value»> something </sometag>
<? php endif; ?>
НЛО прилетело и опубликовало эту надпись здесь
<?php

if ( $flag )
{
  echo "Hello world!";
}

?>


с пробелами в скобках читать по-удобнее, мне кажется.
Пишу в стиле GNU. Для меня он более читаем, так как чётко выделят блоки, операторы разветвления и циклы. Использую gPHPedit. А вообще ИМХО это дело привычки. Человек пишет в том стиле с которого начинал.
($flag? echo «Hello World»:«»)
Это явно не к php )
я передал идею :) в php работало бы так

($flag? print('Hello World'):'')
Кстати у вас тут еще один вопрос поднимается, а используете ли вы одиночные кавычки когда внутри константа или пользуетесь двойными всегда :)
Использую (1) рациональный стиль. Плюс добавляю пробелы для читабельности:
<? php

if ($flag) {
    echo «Hello world!»;
}

?>
Год назад читал многочисленные статьи по code convention, каких знаний тогда получил пока хватет. Допустим, для описания классов я использую стиль который использует автор. А для вложений использую пункт №1. А вообще-то после if ставится пробел, а для вызова функции пробел не ставится.

Zend Framework рекомендует собственный стандарт оформления кода (который, кстати, во многом похож на стардарт PEAR). Думаю, что стоит поддерживаться именно вариант ZF (по отношению к условным операторам там применяется рациональный стиль)
Согласен, использую его же.
Для меня лично уже стал беззаговрочным =) Он кстати на ява соглашения от сан пахож вобщем-то.
Я лично предпочитаю такой вариант, без табов:
<?php
if ($flag) {
 echo "Hello world!";
}
?>
использую стиль GNU: четко видно условие, где оно начинается-заканчивается и содержимое цикла.
Пользуюсь notepad++, с каждой версией он все лучше и лучше.
/* Флаг сет? */
if( $bIsFlag ){
echo 'Hello';
}
НЛО прилетело и опубликовало эту надпись здесь
Безумно понравился вам комментарий :)
Я, видать, дебил… Когда много переменных, пишу именно так.
Лично мне очень помогает ориентироваться
И при добавлении новой переменной, сидишь и еще 10 минут выравниваешь все остальное. Ориентироватся очень помогает грамотное написание кода, которое уже по дефолту выглядит красиво и понятно.
Ориентироваться помогать должны внятные имена, а не список из $x, $yyy, $zzzz (эти имена я привел для примера, я не утверждаю что вы пишете именно так).
С другой стороны, представьте, что в вашем списке из 20 переменных $x приходится переименовать в
$comments_count = 5;
$yyy = 6;
$zzzz = 7;

после чего длинный ряд столбиков «=» придется опять выравнивать по длине $comments_count «чтобы было красиво». В итоге на подобную фигню жутко тратится рабочее время, причем не только у вас, а еще у тех кто будет поддерживать ваш код.
Согласен с вами практически по всем пунктам, кроме одного — у Макконнелла стиль K&R не занял 1-е место, а поделил его со стилем №5 (не знаю как он называется, в общем, это тот, который использует топикстартер), т.к. они оба одинаково хорошо визуально отображают логическую структуру кода.
Мне, к примеру, больше нравится K&R, т.к. он более компактен.
P.S. А на счет «все было ровненько» — было дело :), слава богу, этот период уже прошел.
До изучения питона писал php код довольно грязно, но после питона принял для себя правило — каждый новый логический вложенный уровень должен быть отличен от предыдущего на одну табуляцию (3-4 пробела обычно). Фигурные кобки всегда на следующей строке по табуляции равны условию. Это тогда какой стиль?
tony2001.phpclub.net/doc/standard/ с небольшими собственными отступлениями, в основном касаяется расстановки фигурных скобок, я их ставлю на одной строке с условием, операторами циклов и.т.д. Большие условия не пишу, а если и нужно — размещаю в несколько строк
НЛО прилетело и опубликовало эту надпись здесь
Кстати в книжечке Совершенный код, от Макконнела, эта тема очень хорошо раскрывается, надо бы посоветовать ее почитать всем здесь присутствующим.
с приходом в компанию, было требования писать по ZendCodingStandarts поэтому пишу
1) Рациональный стиль
**********
*****
*****
*****
**
Конечно же Рациональный. Но хотелось бы заметить, что помимо расстановки есть еще стиль именования переменных, классов обьектов, использование управляющих конструкций итд итп.
Ну и конечно же не всегда есть возможность поддерживать один и тотже стиль кодирования. Как например, залезешь через телефон телнетом и попробуй покуролесить там стилем, когда надо быстро поправить.
стиль, который я использую

<? php
if($flag)
{
echo «Hello, World!»;
}
?>
а если условий несколько, то наверное получается что-то вроде:
if($condition)
{
// @todo write comecode
if($anotherCondition) {
// @todo write comecode
}
else {
// @todo write comecode
}
}

Это же читать невозможно!
Хабр пробелы съел и перед php пробел влепил, типограф ни к черту.
По Вашему примеру будет так:
<?php
if($condition)
{
	// @todo write comecode
	if($anotherCondition)
	{
		// @todo write comecode
	}
	else
	{
		// @todo write comecode
	}
}
?>
Если речь идет о PHP, то есть рекомендованные стандарты кодирования от PEAR. Думаю, нужно понимать, чтобы код был читабельным для всех нужно работать по стандартам. А они уже есть.
НЛО прилетело и опубликовало эту надпись здесь
<?php echo isset($flag) ? "Hello World" : "" ?>
Мне тоже очень нравится именно так, часто так делаю.
А насчет скобок — по душе вариант, которым пользуется сам автор поста
K&R стиль мне ближе всего, поэтому ни мог не заметить «ошибочки», пробелов не хватает. Вот так правильней:
<? php

if ($flag) {
    echo «Hello world!»;
}

?>
Несколько усложню вопрос, добавив блок else

В таком случае появляются дополнительные варианты расстановки фигурных скобок:

<? php
// так на строку короче:
if($flag) {
      echo «Hello world!»;
} else {
      echo «Hello world!»;
}

// или же так:

if($flag) {
       echo «Hello world!»;
}
else  {
       echo «Hello world!»;
}

?>

лично мне предпочтительней второй вариант (блоки виднее) :).
я в таком случае сделал бы так:

if($flag)
{
    echo «Hello world !»;
}
else
{
    echo «Hello world !»
}
ну… данный вариант я даже не рассматривал :)
а мне предпочтительнее Ваш первый вариант :)
всю сознательную жизнь им и пользуюсь )
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
делай blockquote, и отступы вручную делай, пробелами ;)
<?php
if ($flag){
    echo(«Hello world!»);
    }
?>


В одну строчку никогда ничего не сворачиваю.
Википедия говорит, что стиль Алмена как раз тот, который вы описали как свой. Именно его и использую, хоть и пишу не на PHP
НЛО прилетело и опубликовало эту надпись здесь
Например, в той же Zend Studio если нажать CTRL+ALT+F будет либо первый вариант, либо последний, который описал автор топика.
Все зависит от мест расстановки начальных {
В шестой версии это можно настроить.
Я пишу в K&R с комментариями:

<?
   if($flag){
      echo "Hello";
   }//if($flag)
?>
<?php

	/* Когда всего одна строчка после условия */
	if($flag)
		print "Hello";
		
	/* Если же их несколько, то я пишу вот так. Пустая строка действительно повышает читабельность, по крайней мере для меня. */
	if($flag) {

		print "Hello";
		exit;
	}	
?>
а зачем перед первым условием отступ?
Приверженность стилю своему.
хех, имхо тут все зависит от того на чем человек пишет кроме пхп. Я например писал сначала на C/C++ под никсами, и использовал не ГНУ-стиль (по мне излишне громоздок), а максимально близкий ему стиль Алмана. Позже перейдя на пхп, использовал его же. Сейчас же пишу еще и на Яве (где нативным (как для языка, так и внутри наших проектов) является рациональный стиль), так что можно сказать сейчас я выбираю стиль для всего кроме Явы. Хотя ближе все равно стиль Аллмана, так как он гораздо читаемее на распечатках кода.
Этот пост конкретно про ПХП
ээээ… а что пхп-код никогда не распечатывают?
Я пользуюсь рациональным стилем, с одним лишь отличием — пробел между условием и скобкой:

if($flag) {
echo «Hello world!»;
}

для if — первый вариант, для функций и классов второй
IDE настоятельно приучает меня к GNU-стилю.
Тьфу, зарапортовался совсем. К рациональному.
Стараюсь писать как в выше приведённых ZendFramework'овских правилах, т.е.: скобки фигурные всегда должны быть, длинные строки оформляются так:
$str=«lllllllllllllllllllllllllllllasadsdsfdfgdffhfgh»
.«fffffffffffffffffffffffffffffffffffffffff»;
И ещё один иентересный момента: нет табуляции — да 4 пробелам.
От Алгола пошел вариант написания скобок begin-end одна под другой с равномерной табуляцией содержимого блоков. К сожалению, разраработчики Cи традицию нарушили.
<?php

class MyExampleClass
{

    /**
     * @param  integer $appleCount
     * @return boolean
     */
    public function isSatisfied( $appleCount = 0 ) {
        if ( (int) $appleCount > 4 ) {
            return true;
        }
        return false;
    }

}


Вот какие-то такие мои карандаши.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории