Советы по написанию кода. Приведение кода к единому общепринятому стилю

В теме 4 сообщения

Cawfee
Великий Гуру

Каждый начинающий разработчик пишет код так, как видит в интернет-ресурсах. Грубо говоря, он привыкает к уже имеющимся шаблонам. Но зачастую код отдельно взятых пользователей лишь вводит в заблуждение о том, что к чему. В программировании существует некий рекомендуемый шаблон, к которому стоит стремиться каждому разработчику. Это позволяет приводить код в общий стиль, что не нарушает читаемость. 

 

Сами советы по написанию кода (рекомендации) будут появляться в данной теме отдельными постами. В создании таких постов может поучаствовать каждый пользователь. 

 

Обратите внимание: написание кода согласно стилю, изложенному в данной теме, является вовсе необязательным. Однако, Вы должны сделать все, чтобы Ваш код был понятен всем пользователям. А потому его все же стоит "подгонять" под один шаблон.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Cawfee
Великий Гуру

#1. Названия переменных и функций не стоит писать с помощью транслитерации. Прежде всего такие названия выглядят крайне неприятно. Стоит учесть и то, что функции зачастую называют, например, так: HideRuki. То есть транслитерация и английский вперемешку. Это тоже является ошибкой при написании кода у многих недопрограммистов. К ранее сказанному, старайтесь писать названия переменных на чистом английском, понятным самим англичанам, нежели переводить отдельные части и пытаться составить из них единое название.

 

В английском языке, ровным счетом как и в русском, существуют некие устойчивые выражения. Рассмотрим одно из них - to take a seat. Если переводить каждое слово в отдельности, мы получим взять кресло. Однако, если переводить полный оборот, то увидим иной перевод - присесть. Поэтому важно понять, что перевод в отдельности каждого слова на английском не всегда дает вам адекватный вариант на английском языке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SCRIPTMAN
Великий Гуру

#2. Названия переменных стоит писать с маленькой буквы, первым символом названия не должна быть цифра, не стоит писать название слитно.

Название переменных стоит писать с маленькой буквы.

Переменные должны начинаться с буквы, а не с цифры (это не совет, просто компилятор в принципе не расценит переменную переменной, если оно начинается с цифры). Касаемо разделения написания названия:

Можно, конечно, написать вот так:

new Text: TDLogotipServera;

Но согласитесь, это не очень красиво, гораздо лучше написать в таком виде:

new Text: td_logotype_server;

Здесь мы учли сортировку переменных (о ней ниже), написание с маленькой буквы, разделение слов, название переменных на английском (выше).

Сортировка переменных:

Согласитесь, не красиво, когда у нас переменные в куче, с почти идентичными названиями(особенно если касается единой системы), гораздо лучше использовать "сортировку" переменных, например:

У нас есть переменные одной системы, переменная для таймера, переменная для текстдрава, многие бы написал так:

new SystemTimer;
new Text: SystemTD[5];

Потом гадай, откуда они, для чего они служат (особенно если вы новичок), для этого можно их "отсортировать" - привести в единый вид, вот например, те же переменные, но "отсортированные":

new timer_system;
new Text: td_system[5];

Теперь, чтобы посмотреть все переменные текстдравов, нам достаточно ввести: "td_".

Тип переменных "bool":

Если у нас переменные могут иметь только 2 значения, то лучше использовать тип "bool" например:

new bool: check_belt[MAX_PLAYERS];


if(check_belt[playerid] == false)
{
	действие;
}
else
{
	дествие
}

Данный тип переменных имеет 2 значения: true(истинна) и false(ложь).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SCRIPTMAN
Великий Гуру

#3. Старайтесь не иметь скроллинг внизу. 

 

Старайтесь не иметь скроллинга внизу.

Мне например не приятно, когда приходиться скроллинг вправо двигать, чтобы просмотреть какой-либо текст или еще что-то, я просто текст растягиваю на несколько строк, стараюсь сделать это грамотно. Пример длинного текста в разных функциях(SPD, string):

SPD(playerid, 0, DSM, "Длинный диалог", "Здесь у нас будет нас текст, он ооочень длинный, это неудобно, да и некрасиво.", "Закрыть", "");

format(string, sizeof(string), "Здесь у нас будет нас текст, он ооочень длинный, это неудобно, да и некрасиво Nick_Name: %s", name);

Сделаем его короче и понятнее:

SPD(playerid, 0, DSM, 
 "\
	Длинный диалог", "Здесь у нас будет нас текст, он ооочень длинный, это неудобно, да и некрасиво.", "Закрыть", "\
 ");

format(string, sizeof(string), 
 "\
	Здесь у нас будет нас текст, он ооочень длинный, это неудобно, да и некрасиво Nick_Name: %s\
 ", name);

Если текст сам по себе длинный, то можно сделать так:

SPD(playerid, 0, DSM, 
 "\
	Длинный диалог", "Здесь у нас будет нас текст, он ооочень длинный,\
	это неудобно, да и некрасиво.", "Закрыть", "\
 ");

format(string, sizeof(string), 
 "\
	Здесь у нас будет нас текст, он ооочень длинный,\
	это неудобно, да и некрасиво Nick_Name: %s\
 ", name);

Так и текст красивее, и табуляция соблюдается. Я обычно так делаю всегда.

Пример моего кода:

static const fmt_str[] =
 "\
	{FFFFFF}Здравствуйте, {FFFF00}%s!\n{FFFFFF}Вы зашли на сервер {2979FF}"NAME_SERVER"\n\
	\n{FFFFFF}Данный аккаунт зарегистрирован\nДля авторизации аккаунта введите свой пароль:\
 ";
new string[sizeof(fmt_str)-2+MAX_PLAYER_NAME+1];
format(string, sizeof(string), fmt_str, GN(playerid));
SPD(playerid, 3, DSP, "Авторизация на A-RP", string, "Далее", "Выход");

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Dekmveka
      От Dekmveka
      Здравствуйте, уважаемые пользователи форума PAWNO-RUS.
       
      В этой теме хочу поделиться видеоуроками, ориентированных на новичков, которые сейчас начинают только изучать pawn. 
      Хочу сказать сразу, я не профессиональный блогер с крутым оборудованием, поэтому если что за какие то погрешности в съемке заранее извиняюсь.
      Хотелось бы попросить не писать, что типа pawn и samp уже умер, неактуален, уроков и так полно и так далее и тому подобное. Я лишь просто занимаюсь своим увлечением и решил делиться знаниями с новичками.
      Далее на канале после плейлиста с основами планируется выложить плейлист по MySQL и максимально подробно всё рассказать о MySQL, будет старая добрая рубрика "Мод с нуля" (но на основе плагинов, стандартов и др. актуальных в 2025-2026 году). 
       
      Также хочу сказать, что есть также телеграмм канал. 
      На данный момент там есть ветка для общения, ветка "Инструменты" (там лежат архивы со всем нужным + есть навигационный пост, я просто поделил всё на категории и просто вставил ссылки на архивы которые туда же выложил. Можете зайти посмотреть если интересно). Также в телеграмм канале потом будут исходные файлы с плейлиста "Мод с нуля" и других плейлистах, пока что говорить подробно не буду что буду ещё выкладывать. 
       
      В общем, я даю ссылки, кому интересно, можете смотреть.
      [Часть 1]: Архитектура ядра SAMP || Основы программирования PAWN/PAWNO  -  *кликабельно*
      [Часть 2]: База мода, переменные, format() || Основы программирования PAWN/PAWNO  -  *кликабельно*
      Telegram канал  -  *кликабельно*
       
      Желаю всем приятного просмотра, а также успехов в обучении 
    • Antoxa39
      От Antoxa39
      Здарова бандиты. 
      Вообщем, в этом уроке я расскажу и покажу как подключить Базу Данных к MySQL.
      Не регистрацию,и не в готовом моде где просто пользователя пароль хост и т.д меняете.
      А подключение с нуля.
       
      1.Нам понадобится MySQL.  Я использую R39-6. Скачать 
      2.Приступаем к подготовительному этапу.
      Заходим в Pawn и подключаем MySQL чуть ниже инклюда a_samp. #include <a_mysql>
      Должно быть так.
      После этого отчищаем мод от хлама. Должно получится вот так: жмЫкс
      3.Подключение
      Дальше нам требуется создать переменную,эта переменная будет хранить ИД подключения. в MySQL R39 создаем простую переменную.
      new dbHandle;  В MySQL R41 создаем так:
       new MySQL:dbHandle;  
      теперь создаем Константы
      #define Host "127.0.0.1" #define User "root" // это если вы используете Denwer. Если хостинг указываете другого пользователя. #define DataBase "urok" #define Password_SQL ""//Если вы на хостинге ставите пароль,для Denwer пароль не требуется, чуть позже скажу как его установить Все, теперь переходим в public OnGameModeInit()
      public OnGameModeInit() {     dbHandle = mysql_connect(Host,User,DataBase,Password_SQL); // приравниваем нашу переменную с ИД подключением к коннекту к базе данных. Извиняюсь если коряво обьяснил. Это для R39     return 1; } Для R41
      public OnGameModeInit() {     dbHandle = mysql_connect(Host,User,Password_SQL,DataBase);// В R41 поменялись местами Пароль и База     return 1; } Если сделаем чтобы при подключении к базе выводилось сообщение о том,подключилось или нет. Я сделаю это без switch. Чтобы сильно не загружать смотрящих этот урок.
      Делаем все там же в public OnGameModeInit()
      public OnGameModeInit() {     dbHandle = mysql_connect(Host,User,DataBase,Password_SQL);     if(mysql_errno())     {         printf("Подключение к базе данных %s не удалось.",DataBase); // %s означает строку. То есть будет выводить название базы данных которое указано в #define DataBase     }     else     {         printf("Подключение к базе данных %s успешно",DataBase);     }     return 1; } Все, с этим закончили. Остался последний этап, это отключение базы данных когда мод выключается.
      Идем в паблик OnGameModeExit()
      public OnGameModeExit() {     mysql_close(dbHandle);     return 1; } Все. База данных подключена.
      Чтобы скачать Denwer жмите сюды: плямп
      Для установки можете перейти по этой ссылке: УСТАНОВКА
    • sinvays
      От sinvays
      Продаётся проект Criminal RolePlay с 8-летней историей.

      Проект заморожен и не используется длительное время.
      Потратил на него около 250.000 рублей, продаю за приемлимую цену.

      В комплекте:
      Полноценный игровой мод Мобильный лаунчер с Figma-дизайном Кэш клиентской части Все версии оформления проекта Все группы проекта Criminal RolePlay Шаблоны всех версий сайта, включая ранее не выпущенный шаблон Модуль автодоната YooMoney Помощь с установкой игрового мода на хостинг Цена:
      49 900₽ — за весь комплект.
      Возможен торг при адекватных предложениях.

      Важное:
      Проект продаётся в одни руки. Если в течение месяца не найдётся покупатель, будет рассмотрена продажа по частям.
      Связаться: https://vk.com/rosetta
    • sinvays
      От sinvays
      Продаётся проект Criminal RolePlay с 8-летней историей.

      Проект заморожен и не используется длительное время.
      Потратил на него около 250.000 рублей, продаю за приемлимую цену.

      В комплекте:
      Полноценный игровой мод Мобильный лаунчер с Figma-дизайном Кэш клиентской части Все версии оформления проекта Все группы проекта Criminal RolePlay Шаблоны всех версий сайта, включая ранее не выпущенный шаблон Модуль автодоната YooMoney Помощь с установкой игрового мода на хостинг Цена:
      49 900₽ — за весь комплект.
      Возможен торг при адекватных предложениях.

      Важное:
      Проект продаётся в одни руки. Если в течение месяца не найдётся покупатель, будет рассмотрена продажа по частям.
      Связаться: https://vk.com/rosetta
    • Elvis
      От Elvis
      Настоящим информируем о начале набора сотрудников в нашу студию "AlinSA Studios". В рамках текущего проекта "VanguardRP", основанного на мотивах CRMP, мы ищем профессионалов и энтузиастов для выполнения следующих должностей:
       
      1. Технические специалисты
       
      Требования:
       
      | Базовые знания в области информационных технологий
      | Понимание структур кода и принципов работы компиляторов
      | Готовность к обучению и развитию профессиональных навыков
      | Иметь базовое представлении ЯП "Pawn" или "Kotlin" и "Java".
       
      Обязанности:
       
      | Поддержка технической инфраструктуры проекта
      | Участие в разработке и оптимизации программных решений
      | Взаимодействие с командой разработки для внедрения новых функций
       
      2. Пиар-ассистенты
       
      Требования:
       
      | Опыт работы в сфере SMM, маркетинга или PR
      | Навыки взаимодействия с аудиторией и ведения социальных сетей
       
      Обязанности:
       
      | Продвижение проекта в социальных сетях
       
      3. Дизайнеры
       
      Требования:
       
      | Наличие портфолио с примерами выполненных работ (не обязательно, желательно)
      | Владение графическими редакторами ! (Photoshop и Figma)
      | Креативность, внимательность к деталям и способность работать в сжатые сроки
       
      Обязанности:
       
      | создание графического контента для соцсетей, сайта и внутриигровых материалов
      | Разработка дизайна интерфейсов, баннеров, логотипов и иллюстраций
      | Участие в визуальном оформлении проекта
       
      4. Геймдизайнеры
       
      Обязанности:
       
      | Разработка игровых механик, правил взаимодействия и систем баланса
      | Проработка сюжета, персонажей и сценариев для создания эмоциональной связи с игроками
      | Проектирование уровней, задач и сценариев для обеспечения разнообразия игрового процесса
      | Взаимодействие с командой разработчиков, художников и звукорежиссёров для достижения согласованности элементов игры
      | Участие в тестировании прототипов, выявление проблем и балансировка игрового процесса
       
      5. Рупоры
       
      Цель роли: Обеспечить эффективное взаимодействие с целевой аудиторией, формировать положительный имидж проекта, своевременно информировать участников о новостях, обновлениях и
      мероприятиях, а также модерировать сообщества для поддержания комфортной и безопасной среды.
       
      -————————-
      Условия работы:
       
      Обучение и постоянная поддержка со стороны команды
      Гибкий график работы / удалённый формат (обсуждается индивидуально)
       
       
      Если вы заинтересованы в присоединении к нашей команде или хотите получить дополнительную информацию, обращайтесь по следующему контакту:
      Telegram: @AntonLegost
       
       
      Благодарим за внимание! Надеемся на плодотворное сотрудничество.
       
      p.s Новички приветствуются. Для пополнение портфолио и наработки опыта.
       
      С уважением,
      Команда "AlinSA Studios"