Вопросы

Добрый вечер друзья.

Изучать pawn я начал относительно не давно, могу самостоятельно написать какие-то команды, системы (не сложные)

Но когда речь заходит об оптимизации, я даже не знаю что сказать, так-как  совершенно в этом не разбираюсь.

 

У меня есть команда:

  /setvw (открыть спойлер)

 

Отредактировано пользователем Yong

LilPokemon
LilPokemon предупредил Yong за это сообщение
Причина: Нарушение правил форума · Баллы: 0 ·

Заметка от LilPokemon , создано

3.1. Заголовок темы должен отражать основную суть темы. Темы без информативного заголовка будут переименовываться, а автор может быть предупрежден (на усмотрение модератора).

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


Ссылка на сообщение

5 ответов на этот вопрос

  • 0

Ты не когда в жизни не поймешь что такое оптимизация, это то что для тебя ещё невозможное.  Функций на столько много и тут уже не как лучше сделать а как тебе удобно . Ты не когда не сможешь сделать код который будет по макс оптимизирован и он будет тебе нравиться как он выглядит  . Конечно если брать большие системы. 

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


Ссылка на сообщение
  • 0

@Yong в этой команде ничего не оптимизировать. 

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


Ссылка на сообщение
  • 0
  В 4/12/2018 в 12:21, DEST сказал:

@Yong в этой команде ничего не оптимизировать. 

Читать далее...  

Просто я с static const не сильно знаком, я все правильно подсчитал ? Или может можно было проще сделать? Ведь команда выводит текст игроку, затем в админ чат, я использую два формата в команде, хочу услышать от профессионалов, правильно ли все сделано, или же можно было проще как то сделать 

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


Ссылка на сообщение
  • 0

@Yong самый простой вариант подсчета это просто выделить символы в кавычках и внизу, в редакторе покажет сколько их. Потом после прибавить еще значения, которые будут подставлены вместо %s, %d и т.д. 

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


Ссылка на сообщение
  • 0

1. Static const, конечно, удобен для подсчета строки, но сильно раздувает код. Если Вас, конечно, никак не напрягают "лишние" строки, то ничего плохого не скажу. И помните, что оптимизация включает не только экономию памяти, быстродействие системы, но и удобство в понимании кода. Мне, например, порой бывает трудно понять за что отвечает params[0] или params[1], params[2] и так далее. А постоянно возвращаться в начало команды, где расположен sscanf, из которого хоть что-то понятно, мне не нравится. Потому я привык использовать отдельные переменные, а в params записывать только строки.

2. В sscanf есть отличный параметр "u", который возвратит ID игрока. Если этого игрока нет в сети, то вернет INVALID_PLAYER_ID. Так если есть встроенные параметры, созданные для извлечения ID игрока, зачем прибегать к другим?

3. Было бы неплохо проверить, есть ли вообще в команде параметры. Возможно, игрок ввел пустую строку (просто /setvw). А система будет вызывать функцию sscanf, что требует какого-то времени. Было бы неплохо в начале команды проверить сразу наличие параметров.

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

  Код (открыть спойлер)

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

6. Если команда не срабатывает по какой-либо причине (например, нет доступа, неправильно введены аргументы, игрок не в сети и все в этом роде), я возвращаю 0. Это позволит через функции, вызывающиеся после этой команды, например, OnPlayerCommandPerformed в DC_CMD, pawncmd, проверить, сработала ли команда. Мне, например, оно нужно. Глядите так и Вам пригодится. Лишним не будет.

 

И с учетом всех вышеприведенных изменений мой код выглядел бы так:

  Код (открыть спойлер)

 

Заметка от DEST , создано

Автоматическое "разукрашивание кода"

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


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

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

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

    • bogdan@gmail
      От bogdan@gmail
      Ошибки при компиляции
       

    • DAYREK
      От DAYREK
      Приветствую, подготовили для вас игровой сайт. Все сделано с нуля.
       
      В систему входит:
      - Главная страница.
      - Магазин.
      - Новости.
      - Личный кабинет.
      Все системы работают, в личном кабинете отображаются данные о игроке, имущество, статистика и прочее, добавите туда по своему желанию еще что-нибудь.

      Основные языки системы:
      - HTML, CSS, JS, PHP
      База данных MySQL
       
      Если я увижу потенциал в данном сайте, буду выпускать обновления. Добавлю систему ЛК для администратора, с отслеживанием логов админов и игроков.
      Изменением настроек сервера и сайта, изменение темы сайта и прочее.

      Связь со мной тык