Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Vingrad CMS > Стандарты кодирования


Автор: IZ@TOP 5.9.2006, 13:01
Итак. Предлагаю ввести стандарт кодирования. Неполный но основной набор правил кодирования:

Отступ (табуляция) равен 4 пробелам. Имена классов модулей и рабочих библиотек начинаются с Большой буквы если (это не системные библиотеки ядра которые начинаются с двух подчеркиваний - это мое ИМХО).
Имена методов начинаются с маленькой буковки))) - если это слитное из нескольких слов - каждое последующее с заглавной буквы. 
Стараемся придерживаться английских названий методов - за имена вроде PodschetKolichestva, Vibrat, Soedinit расстрел на месте!

Для каких либо классов схожих модулей, выполняющих определенный набор методов, пишем интерфейсы и абстракции! 
Весь код должен быть ООП, никаких процедурных модулей, ни кусочка процедурного кода! 
Желательно использовать паттерны.

Не очень понятно изъяснился наверное. Надеюсь ллюди меня поймут)))

Автор: sergejzr 5.9.2006, 13:10
Да нет, весьма понятно smile Согласен со всеми пунктами. Сам так кодирую.
Пример:
Код

/**
 * Visualises given table row.
 * @package HTML_TableList
 * @author sergej.z
 */
class HTML_TableList_RowShowListener {
    /**
     * rowShown: Formats the row
     * @author sergej.z
     * @param array - & $row: Table row to be shown
     * @param array - & $tablelist: Table list object can be used to extract additional variables
     */
   public function rowShown(& $row, & $tablelist) {}
}

/**
 * Visualises the row as "I bid".
 * @package HTML_TableList
 * @author sergej.z
 */
class IBid_ShowListener extends HTML_TableList_RowShowListener {
    /**
     * Look: Standard outlook formatter
     */
    private $Look = false;
    /**
     *best: Determines, wherever the user is a winner of this auction
     */
    private $best = false;
    /**
     * Constructor
     * @author sergej.z
     * @param boolean - best: True if the user wins this auction, false otherwise
     */
    public function __construct($best=false) {
        $this->Look = new Liste_CellLook_Standart();
        $this->best=$best;
    }
    /**
     * rowShown: Formats the row
     * @author sergej.z
     * @param array - & $row: Table row to be shown
     * @param array - & $tablelist: Table list object can be used to extract additional variables
     */
    public function rowShown(& $row, & $tablelist) {
        $this->Look->formatAuctionImage($row);
        if($this->best)
        $row['preis_color_class']=' greentext boldtext ';
        else
        $row['preis_color_class']=' redtext boldtext ';
        $this->Look->formatAuctionPrice($row);
        $this->Look->formatAuctionStartDate($row);
        $this->Look->formatAuctionBid($row);
        $this->Look->formatAuctionImage($row);
        $this->Look->formatAuctionType($row);
        $this->Look->formatAuctionEndDate($row);
        $this->Look->formatAuctionSend($row);
    }
}


Какая ИДЕ? Предлагаю естесственно Eclipse WTP+PHPeclipse+Subversion. благо вариант обкатанный (разработка форума так и идёт)

Автор: sergejzr 5.9.2006, 13:32
Ах да, комменты в стиле http://www.phpdoc.org/. Довольно удобный документатор.

Автор: IZ@TOP 5.9.2006, 14:00
Цитата(sergej.z @  5.9.2006,  14:32 Найти цитируемый пост)
Ах да, комменты в стиле phpDocumentor. Довольно удобный документатор. 

Естественно!!! Кудаж без них! Только в качестве радактора я использую зенду. Мне эклипс как то не сильно понравился.

Автор: sergejzr 5.9.2006, 14:04
Ну это уже по вкусу smile Всё же предлагаю базовый пакет на эклипсе сделать. Зендом с ним можно будет также нормально работать, а эклипсовский пакет уже у многих стоит.

Автор: IZ@TOP 5.9.2006, 14:18
sergej.z, кодировка utf8. Комменты думаю должны быть на русском языке.

Добавлено @ 14:20 
sergej.z, я знаешь чего больше всего жаждю - неймспейсов в РНР! Когда уже эту сказку внедрят... и опять все либы переписывать придется  smile  smile 

Автор: sergejzr 5.9.2006, 14:21
Согласен (хотя можно и на обоих. Уже по вкусу)

Автор: Opik 5.9.2006, 15:50
IZ@TOP, 
Уже есть такое, только в виде патча.

Автор: Wowa 5.9.2006, 17:39
IZ@TOP, да. Со всем согласен.

В качестве редактора я тоже Зенд использую.

Автор: Opik 5.9.2006, 18:39
MVC ?

Автор: Wowa 5.9.2006, 18:42
что это?

Автор: Opik 5.9.2006, 20:53
http://en.wikipedia.org/wiki/Model-view-controller

Автор: IZ@TOP 6.9.2006, 10:05
Opik, а есть другие варианты? 
Выходит у нас такая конструкция: Core - Контроллер, Model - модули, view - XSLT шаблоны. Core  и Model генерируют XML для view.
Я все правильно понимаю?

Цитата(Opik @  5.9.2006,  16:50 Найти цитируемый пост)
IZ@TOP, 
Уже есть такое, только в виде патча. 

Где? Может будем использовать?

Автор: Opik 6.9.2006, 11:01
IZ@TOP, 
Цитата

Где?

http://news.php.net/php.internals/17484
Цитата

Может будем использовать? 

1) Не каждый будет патч на сервер ставить
2) Смысл?

Цитата

Выходит у нас такая конструкция: Core - Контроллер, Model - модули, view - XSLT шаблоны. Core  и Model генерируют XML для view.
Я все правильно понимаю

Нет. направильно.
Допустим на примере юзеров, имеем:
Users (Model), UsersController (Controller), View (smarty/flexy/XML...).
Модель отвечает за работу непосредственно с данными. Контроллер оперирует этими данными и вносит изменения, но опять же через Модель.
Меняется структура данных, база данных и т.п. меняется только модель. Это очень приближенно и то, что я успел понять, ещё вникаю. Но имхо подход правильный.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)