Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія Наступна ревізія | Попередня ревізія | ||
codingguidelines [2023/06/17 13:30] nightfly [Навіщо це?] |
codingguidelines [2024/11/23 14:23] (поточний) nightfly |
||
---|---|---|---|
Рядок 29: | Рядок 29: | ||
<file ini php.ini> | <file ini php.ini> | ||
- | post_max_size | + | magic_quotes_gpc |
- | upload_max_filesize | + | magic_quotes_runtime |
+ | magic_quotes_sybase = Off | ||
+ | date.timezone=" | ||
display_errors = On | display_errors = On | ||
Рядок 37: | Рядок 39: | ||
log_errors_max_len = 1024 | log_errors_max_len = 1024 | ||
report_memleaks = On | report_memleaks = On | ||
- | track_errors = On | ||
html_errors = On | html_errors = On | ||
- | ліміт_пам' | + | memory_limit |
+ | max_input_vars = 50000 | ||
+ | |||
+ | post_max_size = 64M | ||
+ | upload_max_filesize = 64M | ||
</ | </ | ||
Рядок 45: | Рядок 50: | ||
Щодо memory_limit, | Щодо memory_limit, | ||
- | Також ваш код має працювати з **error_reporting(E_ALL)**. Якщо з якихось причин він вимагає // | + | Також ваш код має працювати з **error_reporting(E_ALL)**. Якщо з якихось причин він вимагає // |
Рядок 56: | Рядок 61: | ||
==== PHP-теги ==== | ==== PHP-теги ==== | ||
- | PHP-код обов' | + | PHP-код обов' |
Рядок 83: | Рядок 88: | ||
Щодо скорочених AND (&& | Щодо скорочених AND (&& | ||
- | На тему табів, відступів та іншого - більшість розробників використовує IDE NetBeans і рефлекторно натискає **Alt+Shift+F** для автоматичного форматування коду. | + | На тему табів, відступів та іншого - більшість розробників використовує IDE NetBeans |
- | ==== Іменування змінних | + | ==== Іменування змінних |
+ | Постарайтеся, | ||
- | Постарайтеся, | + | Приклади |
- | Приклади гарного іменування змінних: | ||
<code php> | <code php> | ||
- | $allCities = array(); // очевидно, | + | $allCities = array(); // очевидно, |
- | $allUserData = zb_UserGetAllDataCache(); | + | |
+ | $allUserData = zb_UserGetAllDataCache(); | ||
$totalUsers = 666; // дуже схоже на лічильник якихось користувачів, | $totalUsers = 666; // дуже схоже на лічильник якихось користувачів, | ||
+ | |||
$switchesCount = 12; // лічильник світчів, | $switchesCount = 12; // лічильник світчів, | ||
- | $result = 'some string here'; // так, зрозуміло що це результат чогось, | + | |
+ | $filteredDevices=array(); | ||
+ | |||
+ | $result = 'some string here'; // так, зрозуміло що це результат чогось, | ||
</ | </ | ||
- | І ось у якому вигляді категорично не хочеться бачити роботу зі змінними та їх іменуванням: | + | І ось у якому вигляді |
<code php> | <code php> | ||
$a=$b+$c; | $a=$b+$c; | ||
+ | |||
$huitka=132/ | $huitka=132/ | ||
+ | |||
$LOLIMHERE=SOMESHIT666(); | $LOLIMHERE=SOMESHIT666(); | ||
+ | |||
$f_ar_type_data=12; | $f_ar_type_data=12; | ||
+ | |||
$obj1=$obj2; | $obj1=$obj2; | ||
</ | </ | ||
- | Винятком для односкладового і простого іменування змінних є загальноприйняті | + | Винятком для однобуквового і простого іменування змінних є загальноприйняті |
<code php> | <code php> | ||
- | $i = 0; // стандартний інкрементний або декрементний лічильник | + | $i = 0; // стандартний інкрементний або декрементний лічильник, ну там для $i++, наприклад. |
$total = 0; // загальний лічильник чогось що ми рахували раніше | $total = 0; // загальний лічильник чогось що ми рахували раніше | ||
$count = 0; // приблизно те ж саме за духом | $count = 0; // приблизно те ж саме за духом | ||
$all = array(); // масив з якимось набором даних, який ми будемо потім перебирати | $all = array(); // масив з якимось набором даних, який ми будемо потім перебирати | ||
+ | |||
// Конструкції виду $io => $each є для нас надтиповими на проходах масивів | // Конструкції виду $io => $each є для нас надтиповими на проходах масивів | ||
foreach ($all as $io => $each) { | foreach ($all as $io => $each) { | ||
Рядок 128: | Рядок 145: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | А ось взагалі дуже [[https:// | ||
==== Іменування класів та об' | ==== Іменування класів та об' | ||
Рядок 139: | Рядок 158: | ||
public function __construct() { | public function __construct() { | ||
$this-> | $this-> | ||
- | } | ||
- | |||
- | public function renderList() { | ||
- | ..... | ||
} | } | ||
Рядок 149: | Рядок 164: | ||
} | } | ||
| | ||
+ | public function renderList() { | ||
+ | ..... | ||
+ | } | ||
+ | |||
protected function save() { | protected function save() { | ||
..... | ..... | ||
Рядок 169: | Рядок 188: | ||
Приклад: | Приклад: | ||
+ | |||
<code php> | <code php> | ||
// так, відноситься до роботи з " | // так, відноситься до роботи з " | ||
+ | |||
function zb_AddressChangeCityName($cityid, | function zb_AddressChangeCityName($cityid, | ||
... | ... | ||
Рядок 216: | Рядок 237: | ||
</ | </ | ||
- | Область видимості (protected/ | + | Область видимості (protected/ |
==== Іменування аргументів методів і функцій ==== | ==== Іменування аргументів методів і функцій ==== | ||
- | див. | + | див. |
==== Іменування опцій у конфігах ==== | ==== Іменування опцій у конфігах ==== | ||
- | Просто зазирніть у файли конфігурації типу [[alteriniconf|alter.ini]] і усвідомте, | + | |
+ | Просто зазирніть у файли конфігурації типу [[alteriniconf|alter.ini]] і усвідомте, | ||
Приклад того, як це має виглядати: | Приклад того, як це має виглядати: | ||
Рядок 235: | Рядок 257: | ||
==== Збереження Legacy ==== | ==== Збереження Legacy ==== | ||
- | **Щодо збереження легасі на рівні передбачуваності поведінки системи**: | ||
- | **З приводу збереження легасі на рівні коду**: на даний момент, | + | **Щодо збереження легасі на рівні передбачуваності поведінки системи**: |
+ | |||
+ | **З приводу збереження легасі на рівні коду**: на даний момент, | ||
<code php> | <code php> | ||
Рядок 247: | Рядок 270: | ||
І використовуйте старий і загалом зручний формат оголошення масивів у вигляді | І використовуйте старий і загалом зручний формат оголошення масивів у вигляді | ||
+ | |||
<code php> | <code php> | ||
$userStates = array( | $userStates = array( | ||
Рядок 254: | Рядок 278: | ||
</ | </ | ||
- | Ні, це не стосується використання автоінкрементних квадратних дужок у масивах, | + | Ні, це не стосується використання автоінкрементних квадратних дужок |
<code php> | <code php> | ||
$data[] = $userLink; | $data[] = $userLink; | ||
Рядок 263: | Рядок 288: | ||
Також не використовуйте функціонал, | Також не використовуйте функціонал, | ||
- | У разі, якщо вам потрібно змінити наявний код, що вже працює, | + | У разі, якщо вам потрібно змінити наявний код, що вже працює, |
Якщо ви пишете щось поруч з існуючим кодом, що в основному повторює його функціональність, | Якщо ви пишете щось поруч з існуючим кодом, що в основному повторює його функціональність, | ||
Рядок 269: | Рядок 294: | ||
==== Коментування коду ==== | ==== Коментування коду ==== | ||
- | Коментування функцій і методів - **суворо обов' | + | Коментування |
<code php> | <code php> | ||
+ | |||
+ | /** | ||
+ | * Implementation of funeral services with graves management | ||
+ | */ | ||
+ | |||
class UbillingFuneralServices { | class UbillingFuneralServices { | ||
Рядок 396: | Рядок 426: | ||
==== Локалізація ==== | ==== Локалізація ==== | ||
- | З огляду на те, що Ubilling використовується на території різних країн, де використовуються різні мови, подбайте про те, щоб ваш код можна було легко локалізувати. Тобто під час виведення будь-яких написів, | + | |
+ | З огляду на те, що Ubilling використовується на території різних країн, де використовуються різні мови, подбайте про те, щоб ваш код можна було легко локалізувати. Тобто під час виведення будь-яких написів, | ||
==== Логування ==== | ==== Логування ==== | ||
- | Під час запису подій у загальний системний лог, за допомогою log_register() або будь-якими іншими способами, | ||
+ | Під час запису подій у загальний системний лог, за допомогою log_register() або будь-якими іншими способами, | ||
* (логін користувача) | * (логін користувача) | ||
* {логін адміністратора} | * {логін адміністратора} | ||
- | * < | + | * < |
* [цифровий ID чого-небудь] | * [цифровий ID чого-небудь] | ||
- | * `якесь | + | * `якесь рядкове значення` |
Хороший приклад: | Хороший приклад: | ||
Рядок 422: | Рядок 453: | ||
==== Документування змін ==== | ==== Документування змін ==== | ||
- | Якщо у вас є доступ до редагування цієї wiki - документуйте зміни внесені вами. Як мінімум варто додати відомості про те, що ви щось зробили в [[changelog|Чейнджлог]]. Кінцеві користувачі повинні знати, як змінитися їхнє життя в майбутньому. Зміни, які не видимі кінцевому користувачеві і ніяк не впливають на його життя, в принципі, | + | Якщо у вас є доступ до редагування цієї wiki - документуйте зміни внесені вами. Як мінімум варто додати відомості про те, що ви щось зробили в [[changelog|Чейнджлог]]. Кінцеві користувачі повинні знати, як змінитися їхнє життя в майбутньому. Зміни, які не видимі кінцевому користувачеві і ніяк не впливають на його життя, в принципі, |
* Модуль " | * Модуль " | ||
Рядок 431: | Рядок 462: | ||
* alter.ini: додано нову опцію CHAINSAW_ENABLED, | * alter.ini: додано нову опцію CHAINSAW_ENABLED, | ||
- | Також у разі додавання нової опції, ви маєте задокументувати її на сторінках, | + | Також у разі додавання нової опції, ви маєте задокументувати її на сторінках, |
- | У яких випадках, | + | У яких випадках, |
+ | |||
+ | Критерії дуже прості: | ||
- Ваш модуль вимагає конфігурації, | - Ваш модуль вимагає конфігурації, | ||
Рядок 441: | Рядок 474: | ||
- Робить неочевидні сторонній людині штуки | - Робить неочевидні сторонній людині штуки | ||
- | Не обов' | + | Не обов' |
- | ==== Пасхалки, відсилання | + | |
+ | ==== Великодки, відсилки та інший фансервіс ==== | ||
- | Вітаються. Будь-які. У будь-якому не уебанському вигляді. | + | Вітаються. Будь-які. У будь-якому не уєбанському вигляді. |
- | Ваш код - це продукт ваших взаємин зі всесвітом. І якщо він складається з відсилань | + | Ваш код - це продукт ваших взаємин зі всесвітом. І якщо він складається з відсилок до фільмів, |
==== А де ж Best Practices? ==== | ==== А де ж Best Practices? ==== | ||
Рядок 452: | Рядок 486: | ||
==== Контрибуція в Ubilling ==== | ==== Контрибуція в Ubilling ==== | ||
- | Будь ласка, якщо ви хочете зробити свій внесок у розвиток проекту, | + | Будь ласка, якщо ви хочете зробити свій внесок у розвиток проекту, |
==== Оформлення Пуллреквестів ==== | ==== Оформлення Пуллреквестів ==== | ||
Рядок 479: | Рядок 513: | ||
{{ : | {{ : | ||
- | Після створення пулреквесту - [[https:// | + | Після створення пулреквесту - [[https:// |
- | Чекаємо, | + | Чекаємо, |
Головне, | Головне, | ||
- | Далі повертаємося в гілку master офіційного проєкту й оновлюємо вже змерзлий код: | + | Далі повертаємося в гілку master офіційного проєкту й оновлюємо вже змерджений код: |
<code bash> | <code bash> | ||
git checkout master | git checkout master |