Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Правила хорошего кода 
:(
    Опции темы
Ciber SLasH
Дата 1.3.2006, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: нет
Всего: 67



Цитата(Wowa @ 1.3.2006, 23:48 Найти цитируемый пост)
Я тоже в таком стиле люблю писать. Занимает мало места и для меня - очень наглядно smile

Аналогично smile
PM   Вверх
Alone
Дата 2.3.2006, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: нет
Всего: 6



Цитата(wsr @ 14.1.2006, 00:17)

По моему это лучший вариант для более удобного парсинга своего же кода в будущем!
А то будет в коде куча {{{{{{{ и }}}}}}}} и попробуй разберись что к чему относится, а так все четко и понятно!


Если встерчается конструкция из более чем 2х циклических вложений - это уже повод задуматься о декомпозиции...

Это сообщение отредактировал(а) Alone - 2.3.2006, 10:37


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
-=Ustas=-
Дата 2.3.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Цитата(Ciber SLasH @ 1.3.2006, 23:23 Найти цитируемый пост)
Не совсем согласен. У каждого прогера свой стиль программирования.

Стандарты в любом случае должны быть! Т.к. вольное программирование - как кому нравится, становится трудным в сопровождении кода другими программистами! Личный пример: полгода назад принял некоторый проект на поддержку, так я того прогораммиста готов завалить при первой же встрече!!!!!!!!

Это сообщение отредактировал(а) -=Ustas=- - 2.3.2006, 10:42


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
CyClon
Дата 3.3.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Меня просто в дрошь кидает, когда вижу такое:

Код
}
else
{


Не красиво до ужаса, вот } else { совсем другое дело ;)


--------------------
user posted image
PM   Вверх
-=Ustas=-
Дата 3.3.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Стандарты пиар у руля!!! По-любому!


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
S.A.P.
Дата 3.3.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



Код

if (eregi("mail.ru", $_POST['mail'])) {
    echo "Sorry...";
} else {
    header("Location: reg.php");
}


для такого случая я использую
Код

if (eregi("mail.ru", $_POST['mail'])) 
    echo "Sorry...";
else
    header("Location: reg.php");


а вобще
Код

if (eregi("mail.ru", $_POST['mail'])) 
{
    echo "Sorry...";
    // blablabla

else 
{
    header("Location: reg.php");
    // blablabla
}


И что тут такого ужастного?? Все наглядно и понятно.
PM MAIL   Вверх
Ciber SLasH
Дата 3.3.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: нет
Всего: 67



Цитата(CyClon @ 3.3.2006, 14:26 Найти цитируемый пост)
Меня просто в дрошь кидает, когда вижу такое:

Я помню когда сам писал так давно на С. У нас в универе сначала преподавали Pascal и он мне понравился до безумия. Ну и там как раз блоки операторов отделяются так:
Код

if ()
begin
  {действия}
end;

и когда после Pascal-я начали учить C, то я старался придерживаться той структуры кода, как в Pascal-е, т.е. писал так:
Код

if ()
{
  // действия
}

но потом от такой структуры отказался, т.к. код сильно расплывается из-за лишних переводов строк. И в итоге мне приглянулась такая структура:
Код

if () {
  // действия
} else {
  // действия
}

PM   Вверх
IZ@TOP
Дата 9.3.2006, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Кому что. Мне больше с отступами нравится

Код

if( condition ) {

    // По сноске до тела конструкции и после
    callfunction();

} else {

    // По аналогии
    $class->callmethod();

}



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
RomanK
Дата 30.3.2006, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 25.6.2005
Где: Россия, Выборг

Репутация: нет
Всего: 2



Мне тоже не нравятся стандарты PEAR.

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

Пример:
Код

<?php
class ClassName
{
    private $firstVar    =null; // Comments.
    private $secondVar   =0;
    
    function TestMethod($var=false)
    {
        if($var) $this->firstVar='string';
        else
        {
            if(is_null($this->secondVar)) $this->secondVar=1;
            else                          $this->secondVar=10;
        }
    }
}
function TestFunction($var=true)
{
    static $a=0;

    if($var) return false;
    else
    {
        if(is_null($a))
        {
            $a=1;
            return false;
        }
        else
        {
            $a=2;
            return true;
        }
    }
}
?>

PM MAIL WWW ICQ   Вверх
Serkys
Дата 30.3.2006, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: нет
Всего: 22



А я так пишу:
Код

if () {    
  // действия    
}
else {    
  // действия    
};

По мне, так очень удобно. Особо в стандарты не всматривался, пока пишу как удобно мне. Вроде все, кто смотрел мой код, врубались быстро и не жаловались.
PM MAIL   Вверх
skalex
Дата 6.4.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: нет
Всего: 23



Может кто писал уже, не знаю ...

Вот такой код:
Код
if ($foo == 'bar') {
   echo "Yes";
} else {
   echo "No";
}

я всегда стараюсь записывать так:
Код
echo ($foo == 'bar') ? 'Yes' : 'No';


Еще пример:
Код
if ($foo == 'bar') {
   $s1 = "Yes";
} else {
   $s1 = "No";
}
$s2 = 'Response: '.$foo.'!';

заменяю на
Код
$s2 = 'Response: '.(($foo == 'bar') ? 'Yes' : 'No').'!';


Разумеется, речь идет о одностроковых действиях в блоках if-else. smile
PM   Вверх
Ignat
Дата 6.4.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: нет
Всего: 73



А кто сказал, что PEAR - это эталон? Если нашлось достаточно большое количество противников такого подхода, то что-то неладно с этим стандартом. Я сам сторонник стандартов, но стандарты, которые усложняют коммуникативность должны быть изменены, ИМХО.
Когда приходится рефакторить огромное количества кода, то начинаешь плеваться от такой размазанности, т.к. страдает визуальное восприятие. Ведь код должен не только работать, но и читаться.

Я всеми руками за конструкцию:

Код

if ($foo == 'bar') {

   $s1 = "Yes";
   $s2 = "Yes";
   $s3 = "Yes";

}elseif ($foo == 'barbar'){

   $s1 = "No";
   $s2 = "Yes";

}else{

   $s1 = "No";

}


В коде: смысловые блоки компактны, четко выделены узлы ветвления, при этом отражено направление ветвления визуально (что страдает у PEAR-а).


--------------------
Теперь при чем :P
PM   Вверх
CyClon
Дата 6.4.2006, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Мне все больше нравятся тсандарты PEAR. Так, пересмотрев справочник я нашел там вот такие вещи:

Код
<?php

function myfunc()
{
    if ($variable == 1) {
        return true;
    } else {
        return false;
    }
}

?>


Чем вам не нравится данный подход?
Добавлено @ 13:13
Основные выдержки из мануала:

Цитата
Используйте для отступа 4 пробела, а не табуляцию.


Оформление оператора if:

Код
if ((condition1) || (condition2)) {
    action1;
} elseif ((condition3) && (condition4)) {
    action2;
} else {
    defaultaction;
}


Оформление оператора switch:

Код
switch (condition) {
case 1:
    action1;
    break;

case 2:
    action2;
    break;

default:
    defaultaction;
    break;

}


Объявления переменных, выхов функции:

Код
$var = foo($bar, $baz, $quux);

Код
$short         = foo($bar);
$long_variable = foo($baz);


Объявление функций:

Код
function connect(&$dsn, $persistent = false)
{
    if (is_array($dsn)) {
        $dsninfo = &$dsn;
    } else {
        $dsninfo = DB::parseDSN($dsn);
    }

    if (!$dsninfo || !$dsninfo['phptype']) {
        return $this->raiseError();
    }

    return true;
}


Цитата
Подходят комментарии в стилях C (/* */) и C++ (//). Использование комментариев в стиле Perl/shell (#) не рекомендуется.



--------------------
user posted image
PM   Вверх
Ignat
Дата 6.4.2006, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: нет
Всего: 73



Цитата(CyClon @ 6.4.2006, 14:06 Найти цитируемый пост)
Используйте для отступа 4 пробела, а не табуляцию.

Протестую. Из чисто практических соображений - задолбаешься.

Приведу в пример опять рефакторинг - когда приходится лечить прбитый к левому краю код, то количество выставленных табов исчисляется тысячами. Соответственно в пробелах в 4 раза больше. Тем более парсить такой код впоследствии проще.

Код

$short              = foo($bar);
$long_variable = foo($baz);


А это красиво, но малочитабельно. Объявление из 7-8 переменных с именем разной длины приводит к неприятному эффекту, когда видишь, что присваивается, но не видишь чему. Приходится либо ставить курсор, чтобы посмотреть номер строки, либо приложить к монитору линейку =)



Цитата(CyClon @ 6.4.2006, 14:06 Найти цитируемый пост)
Оформление оператора if:

Вот это излюбленный мной стиль. Но предпочитаю в больших блоках ставить разрыв (пустая строка) после открытия блока и перед закрытием.



Цитата(CyClon @ 6.4.2006, 14:06 Найти цитируемый пост)
Оформление оператора switch:

ИМХО, break вертикально должен совпадать с соответствующим case, т.к. по сути является его закрытием, следовательно визуально не должен "вылетать" из логики. A case и default в свою очередь должны иметь отступ от switch, чтобы не "смазывать" закрывающую скобку.
Пример (живой):
Код

    function action($act){
    
        switch ($act){
        
            case 'edit':
                $this->edit();
            break;

            case 'delete':
                $this->delete();
            break;

            case 'save':
                $this->save();
            break;

            default:
                $this->default_action();
        
        }
    }



Всё вышеизложенное - моё ИМХО.


--------------------
Теперь при чем :P
PM   Вверх
skalex
Дата 6.4.2006, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: нет
Всего: 23



Цитата
Приведу в пример опять рефакторинг - когда приходится лечить прбитый к левому краю код, то количество выставленных табов исчисляется тысячами. Соответственно в пробелах в 4 раза больше. Тем более парсить такой код впоследствии проще.


Вообще в некоторых редакторах есть функции вылечивания такого кода (анализ и автоматическая расстановка отступов).
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0870 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.