SlideShare a Scribd company logo
Twinslash © 2010 Стандарты кодирования
Условия хорошего кода
Условия хорошего кода Использование стандарта написания кода
Тщательное документирование кода
Использование эффективных и понятных архитектурных решений
Общие стандарты Стандартный отступ пробелами (2 пробела)
Строка 80-120 символов (в размер экрана)
Файлы в кодировке UTF-8
Unix разделитель строк
Стандарт кодирования PHP Основан на: Стандарт PEAR  http://pear.php.net/manual/ru/standards.php
Стандарт symfony  http://trac.symfony-project.org/wiki/HowToContributeToSymfony#CodingStandards
Нотации кода Верблюжья нотация:  $myVariable ,  class NewReport  (первая буква заглавная в зависимости от условий)
Подчеркнутая нотация:   $my_variable
Оформление текста и файлов, основные правила Файлы  не содержат  закрывающего тега PHP  ?>
Каждый класс содержится в отдельном файле, имя которого совпадает с именем класса и оканчивается на  .class.php
Оформление текста и файлов, основные правила Открывающая и закрывающая фигурные скобки  всегда  располагаются каждая на отдельной линии. if   ( $a  >   0 ) {      $a  =   4 ; } class   User   {      public   function  getAge ()    {      }   }
Оформление текста и файлов, основные правила Арифметически операторы, операторы условий и оператор присваивания всегда обрамляются пробелами. if   ( $age  >   5   &&  $rate  >   50 ) {      $wineStatus  =   'good' ;   }
Соглашения об именах Встроенные переменные PHP  true ,  false  и  null  должны быть написаны  в нижнем регистре .
Соглашения об именах $isCreated  =   true ; $count_degrees  =   40 ; Имена переменных -- в верблюжьей нотации с маленькой буквы Иногда допустима подчеркнутая нотация.
Соглашения об именах function  count_events ( $user ) {      //... } Имена функций в подчеркнутой нотации.
Соглашения об именах define ( 'PROJECT_VERSION' ,   '1.2' ) ; class   User   { const  AGE_MAX  =   90 ; } Константы и константы классов: все заглавные буквы с подчеркиваниями вместо пробелов
Соглашения об именах class   User   { } class  transinetUser  extends  sfUser { } Имена классов в вербльюжьей нотации с заглавной буквы, если не определен префикс-namespace в symfony
Соглашения об именах class  Car { public  $numOfWheels  =   4 ; protected  $engine  =  null ;   public   function  getWheels () { //.. } } Методы и свойства классов в верблюжьей нотации с маленькой буквы. Подчеркивание для protected и private  не используется .
Соглашения об именах Имена переменной, класса, функции должны нести четкое описание своего назначения.  Для переменных с ролью флага имена наподобие  $isSomething ,  $useSomething
Для переменных даты  $somethingAt  или  $dateOfSomething
Соглашения об именах Для переменных с указанием на количество  $numOfSomething  или  $somethingCount
Для методов получения или установки какого-то внутреннего состояния де-факто стандарт имена вида  getSomething()  и  setSomething($value)
Для методов получения строки для вывода названия типа  renderSomething()
Массивы $someArray  =   array ( 'foo'   =>   'bar' , 'spam'   =>   'ham' , 'bzz'   =>   array ( 'bzz1' , 'bzz2' ) ) ; Объявление массива более чем из одного элемента необходимо разбивать на несколько строк по элементам
Управляющие структуры Управляющие структуры включают в себя операторы  if ,  for ,  while ,  switch
В управляющих структурах между ключевым словом и открывающей круглой скобкой должен находиться пробел, чтобы отличать их от вызова функций.
Необходимо использовать фигурные скобки в любой управляющей структуре,  независимо от того, сколько строк она занимает
Управляющие структуры // некорректно!!!111 if ( $i  >   0 )  $i  +=   4 ; // корректно if   ( $i  >   0 )   { $i  +=   4 ; }
Управляющие структуры Синтаксис оператора switch switch   ($ condition )   { case   1 : action1() ; break ; case   2 : action2() ; break ; case   3 : default : defaultaction() ; break ; }
Управляющие структуры Сложные условия выбора рекомендуется разбивать на несколько строк или упрощать if   (   $condition1 ||   $condition2 ||   $condition3 )   { // code here }

More Related Content

PDF
Scala lecture #4
PPTX
Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения.
PPTX
основы програмирования Pascal
PDF
PPTX
Symfony(keremet research)
PPT
Cтиль программирования
PPTX
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
PDF
язык работы с КМАС (Yafoll сообщение 1)
Scala lecture #4
Стажировка-2013, разработчики, занятие 3. Абстракции, контракты, соглашения.
основы програмирования Pascal
Symfony(keremet research)
Cтиль программирования
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 2
язык работы с КМАС (Yafoll сообщение 1)

What's hot (18)

PPT
Rupyru2007 Rastyagaev Ruby
PPT
лекции спрг 6_семестр (1)
PPTX
алг и прогр (11кл)
PDF
C++ Базовый. Занятие 03.
PDF
Статический анализ и регулярные выражения
PPT
PPT
PDF
PPTX
Стажировка-2015. Разработка. Занятие 8. Абстракции, именование,документирование
PDF
C++ Базовый. Занятие 02.
PDF
C++ Базовый. Занятие 04.
PPT
ODP
Использование хранимых процедур в MySQL (Константин Осипов)
PPT
модуль 14 введение в generics
PPT
лабраб 3
PDF
Объектно-ориентированное программирование. Лекция 7 и 8.
PPT
введение в паскаль
PDF
C++ Базовый. Занятие 01.
Rupyru2007 Rastyagaev Ruby
лекции спрг 6_семестр (1)
алг и прогр (11кл)
C++ Базовый. Занятие 03.
Статический анализ и регулярные выражения
Стажировка-2015. Разработка. Занятие 8. Абстракции, именование,документирование
C++ Базовый. Занятие 02.
C++ Базовый. Занятие 04.
Использование хранимых процедур в MySQL (Константин Осипов)
модуль 14 введение в generics
лабраб 3
Объектно-ориентированное программирование. Лекция 7 и 8.
введение в паскаль
C++ Базовый. Занятие 01.
Ad

Similar to Coding Standards (20)

PPT
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ODP
ZFConf 2010: Zend Framework and Doctrine
PPT
2 Константы и поля; методы и параметры; свойства.ppt
PPT
Декораторы в Python и их практическое использование
PDF
C++ осень 2012 лекция 9
PPT
Что нового в PHP-5.3
PPTX
Спецкурс 2014, занятие 3. Абстракции, именование, документирование
PPT
бегун
PDF
Погружение в Dart
PPT
бегун
PDF
C++ осень 2012 лекция 6
PPTX
PHP7 - что ожидать?
PDF
6.4 Ещё о шаблонах
PDF
Authemployee
PPTX
Оптимизация трассирования с использованием Expression templates
PPTX
Оптимизация трассирования с использованием Expression templates
PPT
03_JavaBasicConstructionsAndDatatypes
PPTX
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
PDF
углубленное программирование на C++. лекция no.5 [4.0]
PDF
C++ осень 2013 лекция 5
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: Zend Framework and Doctrine
2 Константы и поля; методы и параметры; свойства.ppt
Декораторы в Python и их практическое использование
C++ осень 2012 лекция 9
Что нового в PHP-5.3
Спецкурс 2014, занятие 3. Абстракции, именование, документирование
бегун
Погружение в Dart
бегун
C++ осень 2012 лекция 6
PHP7 - что ожидать?
6.4 Ещё о шаблонах
Authemployee
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
03_JavaBasicConstructionsAndDatatypes
Спецкурс-2015. Занятие 03. Абстракции, именование, документирование.
углубленное программирование на C++. лекция no.5 [4.0]
C++ осень 2013 лекция 5
Ad

Coding Standards