Инструменты пользователя

Инструменты сайта


eaze:style_guide

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

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