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

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


codingguidelines

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
codingguidelines [2018/09/10 16:44]
nightfly [Именование классов и объектов]
codingguidelines [2020/04/22 13:32] (текущий)
nightfly [Логирование]
Строка 239: Строка 239:
 **По поводу сохранения легаси на уровне предсказуемости поведения системы**:​ если вы делаете функционал меняющий поведение системы по-умолчанию,​ помните,​ что делаете вы его в первую очередь не для себя а для кучи сетей, которые надеются,​ что после обновления поведение их системы будет предсказуемым и привычным,​ а девочки кассирши не начнут писать заявления об увольнении,​ параллельно с выкидывающимися из окон системными администраторами. Если для реализации запланированного вами функционала требуется изменить поведение системы,​ этот функционал должен быть отключаем при помощи файлов конфигурации и быть отключенным по-умолчанию. Согласитесь,​ вы не будете обрадованы тем, что после обновления при попытке попасть в профиль пользователя,​ вы вместо него увидите фотку сисек, пускай даже очень красивых. Каждый раз когда вам хочется сделать "​для всех"​ что-то,​ что кажется вам очень крутым,​ посмотрите для [[http://​stats.ubilling.net.ua/​graph/​|скольки]] сетей вы хотите сделать жизнь "​веселее"​ и адекватно оцените шансы на попадание этого в мейнстрим. **По поводу сохранения легаси на уровне предсказуемости поведения системы**:​ если вы делаете функционал меняющий поведение системы по-умолчанию,​ помните,​ что делаете вы его в первую очередь не для себя а для кучи сетей, которые надеются,​ что после обновления поведение их системы будет предсказуемым и привычным,​ а девочки кассирши не начнут писать заявления об увольнении,​ параллельно с выкидывающимися из окон системными администраторами. Если для реализации запланированного вами функционала требуется изменить поведение системы,​ этот функционал должен быть отключаем при помощи файлов конфигурации и быть отключенным по-умолчанию. Согласитесь,​ вы не будете обрадованы тем, что после обновления при попытке попасть в профиль пользователя,​ вы вместо него увидите фотку сисек, пускай даже очень красивых. Каждый раз когда вам хочется сделать "​для всех"​ что-то,​ что кажется вам очень крутым,​ посмотрите для [[http://​stats.ubilling.net.ua/​graph/​|скольки]] сетей вы хотите сделать жизнь "​веселее"​ и адекватно оцените шансы на попадание этого в мейнстрим.
  
-**По поводу сохранения легаси на уровне кода**: на данный момент,​ мы вынуждены и поддерживаем работоспособность Ubilling от PHP 5.3 до PHP 7.0, из за большого количества старых установок,​ которые менять никто не будет, так как они успешно работают годами. Поэтому воздержитесь как от использования нового синтаксиса массивов с квадратными брекетами в виде ​+**По поводу сохранения легаси на уровне кода**: на данный момент,​ мы вынуждены и поддерживаем работоспособность Ubilling от PHP 5.3 до PHP 7.4 (да, это возможно и не сложно), из за большого количества старых установок,​ которые менять никто не будет, так как они успешно работают годами. Поэтому воздержитесь как от использования нового синтаксиса массивов с квадратными брекетами в виде ​
  
 <code php> <code php>
Строка 390: Строка 390:
  
 Правда ведь, не сложно написать пару слов, о том, чего делает метод, что, какого типа и в каком виде лежит в переменной?​ Вы даже не догадываетесь насколько это в будущем упрощает жизнь вам и тем, кто будет пытаться работать с этим кодом. Если вас дальше терзают сомнения,​ можете бегло пробежаться глазами по существующему коду например [[https://​github.com/​nightflyza/​Ubilling/​tree/​master/​api/​libs|тут]] и сделать выводы,​ о том, что от вас ожидается в дальнейшем. Исключениями для комментирования,​ являются случаи,​ в которых вы пишите свой модуль на [[brainfuck|Brainfuck]] - там и без комментариев все очевидно. Правда ведь, не сложно написать пару слов, о том, чего делает метод, что, какого типа и в каком виде лежит в переменной?​ Вы даже не догадываетесь насколько это в будущем упрощает жизнь вам и тем, кто будет пытаться работать с этим кодом. Если вас дальше терзают сомнения,​ можете бегло пробежаться глазами по существующему коду например [[https://​github.com/​nightflyza/​Ubilling/​tree/​master/​api/​libs|тут]] и сделать выводы,​ о том, что от вас ожидается в дальнейшем. Исключениями для комментирования,​ являются случаи,​ в которых вы пишите свой модуль на [[brainfuck|Brainfuck]] - там и без комментариев все очевидно.
 +
 +===== Codeflow =====
 +
 +==== Пример в картинках ====
 +{{ :​ubilling_code_flow.png?​ |}}
 +
  
 ==== Локализация ==== ==== Локализация ====
 Учитывая,​ что Ubilling используется на территории различных стран где используются различные языки, позаботьтесь о том, чтобы ваш код можно было легко локализировать. То-есть при выводе любых надписей,​ используйте штатную i18n функцию __('​English string here'​). Подробнее о том, как работает локализация вы можете узнать в базовом руководстве по [[development|разработке модулей]]. Как минимум от вас ожидается написание строк подлежащих локализации на английском с желательным самостоятельным переводом на украинский и русский или ваш нативный язык. Учитывая,​ что Ubilling используется на территории различных стран где используются различные языки, позаботьтесь о том, чтобы ваш код можно было легко локализировать. То-есть при выводе любых надписей,​ используйте штатную i18n функцию __('​English string here'​). Подробнее о том, как работает локализация вы можете узнать в базовом руководстве по [[development|разработке модулей]]. Как минимум от вас ожидается написание строк подлежащих локализации на английском с желательным самостоятельным переводом на украинский и русский или ваш нативный язык.
 +
 +==== Логирование ====
 +При записи событий в общий системный лог, при помощи log_register() либо любыми другими способами,​ постарайтесь придерживаться следующих соглашений,​ в тексте записи:​
 +
 +
 +  * (логин пользователя)
 +  * {логин администратора}
 +  * <​nowiki>​((ID пользователя УКВ))</​nowiki>​
 +  * [цифровой ID чего либо]
 +  * `какое либо строковое значение`
 +
 +Хороший пример:​
 +<code php>
 +log_register('​MYMODULE CHANGE ('​.$userLogin.'​) EYECOLOR ON `blue`'​);​
 +</​code>​
 +
 +или
 +
 +<code php>
 +log_register('​MYMODULE CREATE ['​.$newID.'​] AS `cocaine`'​);​
 +</​code>​
 +
  
  
codingguidelines.1536587046.txt.gz · Последние изменения: 2018/09/10 16:44 — nightfly