This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
rukovodstvo:rukovodstvo_razrabotchika [07.05.15 в 15:50] maslov [Правила оформления кода] |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Руководство разработчика команды «KAD :: Systems» ====== | ||
- | Добро пожаловать в нашу команду! | ||
- | Мы занимаемся разработкой сайтов на системе управления HostCMS 6.x, а также их доработкой и технической поддержкой. Все взаимодействия мы производим внутри нашей системы для работы с клиентами, которая показала себя очень эффективно. Данная система носит название «KAD :: Outsource». Она является основным инструментом для связи всех участников процесса разработки. Регулярно мы обновляем её и дорабатываем новый функционал. | ||
- | Данное руководство состоит из двух разделов. Первый из них – это правила и стандарты, принятые в нашей команде. Второй – практические советы и рекомендации. | ||
- | ===== Правила и стандарты ===== | ||
- | ==== Правила оформления кода ==== | ||
- | Независимо от уровня профессионализма или отличительных особенностей синтаксиса, очень просто написать неряшливый или малопонятный код. Трудный для чтения код сложен в обслуживании и отладке. Скверный стиль кодирования ассоциируется с недостатком профессионализма.\\ | ||
- | В нашей команде мы используем единый стиль программирования. Помимо удобочитаемости такого кода, красивый код говорит о нашем профессионализме. Если вы ставите над кодом копирайты, то есть подписываетесь именем нашей команды, то ваш код должен быть на уровне. Иначе вы ставите под угрозу репутацию самой команды и каждого из её участников. | ||
- | Основные правила оформления кода:\\ | ||
- | - Правильное именование переменных и функций. | ||
- | * Имена глобальных переменных и констант должны вводиться в верхнем регистре | ||
- | * Префикс переменной определяет её тип. Для переменной типа string следует использовать префикс «s», например <php>$sInput</php>. Для bool – «b». Для объектов – это «o», например, <php>$oBook</php>, для массива - «a». При этом, если у нас есть массив с данными одного типа, то помимо префикса массива, нужно указывать еще и тип элементов массива, например, <php>$aoBooks</php>. Кстати, предусмотрен префикс и для смешанных типов mixed – «m». | ||
- | * Переменные, определенные в классе, как private всегда носят префикс «_», например, <php>$_oController</php> | ||
- | * Временные переменные и итераторы следует называть коротко. Например, i, j, k, l, m, n. Для строковых и числовых временных переменных рационально использование названий без префикса, например <php>$name, $pass, $counter</php>. | ||
- | * Переменные, использующие несколько слов в названии, пишутся слитно, без знака «_». Например, <php>$oBookComment</php>. Но если речь идет о константе или глобальной переменной, то здесь целесообразно использование знака «_». Например, <php>$CACHE_DIR</php>. | ||
- | * Для имен методов и функций следует применять те же правила, что и для переменных. Начинаться имена методов и функций должны с символов в нижнем регистре. | ||
- | * При создании модели объекта с неопределенной выборкой, например, <php>$oShopItems = Core_Entity::factory(‘shop_item’)</php> имя переменной должно быть во множественном числе с содержанием префикса o - object. При уточнении выборки и получении массива объектов <php>$aoShopItems = $oShopItems->findAll()</php> префикс должен быть ao - array of objects. При создании модели конкретного объекта имя переменной должно быть в единственном числе, например, <php>$oShopItem = Core_Entity::factory(‘shop_item’, 25)</php>. | ||
- | - Использование пустого пространства и фигурных скобок. | ||
- | * Чтобы усилить логическую структуру кода, следует использовать переносы строк – пустое пространство. Не бойтесь ставить переносы строк, давайте коду как можно больше свободы. | ||
- | * Cледует разбивать блоки инициализации ряда переменных по логическому смыслу, например<code php> | ||
- | $name = «testname»; | ||
- | $login = «testlogin»; | ||
- | $pass = «testpass»; | ||
- | $oSite = Core_Entity::factory('site', $site_id); | ||
- | $oUser = Core_Entity::factory('user', $user_id); | ||
- | $oController = new Core_Controller($oUser); | ||
- | </code>Первый блок с переменными содержит какие-то предустановленные значения. Второй – создание объектов. Третий – контроллера. Следует записать так:<code php> | ||
- | $name = «testname»; | ||
- | $login = «testlogin»; | ||
- | $pass = «testpass»; | ||
- | $oSite = Core_Entity::factory('site', $site_id); | ||
- | $oUser = Core_Entity::factory('user', $user_id); | ||
- | |||
- | $oController = new Core_Controller($oUser); | ||
- | </code> | ||
- | * Управляющие конструкции – условия и циклы следует отделять переносами. Например,<code php> | ||
- | $bonus = 0; | ||
- | |||
- | // Вычисляем сумму бонусов товаров | ||
- | foreach ($aoShopOrderItems as $oShopOrderItem) | ||
- | { | ||
- | $bonus += $this->getBonus($oShopOrderItem->shop_item_id); | ||
- | } | ||
- | |||
- | return $bonus; | ||
- | </code> | ||
- | * Фигурные скобки всегда следует отделять переносом строки. | ||
- | * Отступы | ||
- | * Отступы внутри управляющих конструкций должны присутствовать обязательно. | ||
- | * Также отступы и переносы строк следует использовать в сложных условиях и в сложных конструкциях, подразумевающих создание вложенных объектов.<code php> | ||
- | if (isset(Core_Page::instance()->object) | ||
- | && strpos( | ||
- | get_class(Core_Page::instance()->object), | ||
- | 'Informationsystem_Controller_Show' | ||
- | ) !== false | ||
- | ) | ||
- | { | ||
- | $Informationsystem_Controller_Show->addEntity( | ||
- | Core::factory('Core_Xml_Entity') | ||
- | ->name('current_group_id') | ||
- | ->value(intval(Core_Page::instance()->object->group)) | ||
- | )->addEntity( | ||
- | Core::factory('Core_Xml_Entity') | ||
- | ->name('current_item_id') | ||
- | ->value(intval(Core_Page::instance()->object->item) | ||
- | ) | ||
- | ); | ||
- | }</code> | ||
- | - Не используйте оператор echo для вывода html кода. Следует использовать закрывающие и открывающие php теги: <html><?php ?></html> |