eaze:style_guide
Общие требования к коду
Пишите код так, чтобы он был понятен не только вам, но и тем людям, которые будут поддерживать проект после вас
В коде не должно быть так называемых «магических чисел», т.е. когда в исходном тексте встречается некоторое значение и неочевидно, что оно означает. Такие магические значения должны быть вынесены в константы (в среде PhpStorm это легко делается с помощью комбинации Ctrl+Alt+C )
Используйте клёвые комментарии, они облегчат жизнь и вам, и другим разработчикам:
/** @var $varName VarType */
Использование неинициализированных переменных и необъявленных полей класса недопустимо. Следующий код недопустим:
// До этого места переменная $find нигде не определена
if ( условие ) {
$find = true;
}
$this->doSomething( $find ); // получаем NOTICE если 'условие' не выполняется
На страницах не должно быть ошибок JavaScript.
Итоговая страница должна проходить w3c-валидацию.
Eaze
В action никогда не может быть sql запроса, потому что это «Controller», Получение данных нужно делать в «Model», т.е. в утилите.
В js можно использовать только те данные, которые были специальным образом переданы:
Response::setParameter( 'varName', ObjectHelper::ToJson($data) );
При вызове методов класса *Factory параметр options[BaseFactory::CustomSql] нужно использовать только в случаях OR или EXISTS или сложных функций, например lower(email) = lower. В простых случаях для задания ORDER BY или LIMIT следует использовать options[BaseFactory::OrderBy] и search['pageSize'] соответственно.
Не стоит использовать BaseFactory::CustomSql, если нужного поведения можно добиться с помощью Search Array в MFD.
При формировании строки options[BaseFactory::CustomSql] переменные нужно подставлять, предварительно сконвертировав их с помощью методов PgSqlConvert или MySqlConvert.
При вызове методов класса *Factory Не забывайте задавать опцию BaseFactory::WithoutPages ⇒ true в случае, когда вам не нужна пагинация (разбиение на страницы). Иначе, если у объекта в MFD включена опция «CanPages», вы получите неполный набор данных. Если вы забудете передать параметр в метод Count(), вы можете получить дробное количество элементов ;)).
Вспомогательные функции, работающие с моделью (в т.ч. собственные запросы к БД или другим источникам данных), должны быть вынесены в класс <ИмяОбъекта>Utility, а функции, помогающие отобразить данные на странице (например, формирующие нетривиальный
HTML), должны быть вынесены в класс *Helper.
Не забывайте проверять параметры поиска, передаваемые в Factory::UpdateByMask(); UpdateByMask валидирует массив поиска и удаляет значения, равные нулю, поэтому есть шанс обновить СРАЗУ ВСЮ ТАБЛИЦУ. Внимательно проверяйте имена поисковых параметров и убедитесь в том, что они присутствуют в списках Search Array или Entity Attributes в MFD .
Стиль именования
Статические методы классов нужно называть с Большой буквы
В именах методов и переменных используется lowerCamelCase
В именах таблиц в TDM используется lowerCamelCase
Оформление кода
eaze/style_guide.txt · Последние изменения: 2012/01/10 22:06 — sergeyfast