Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Небольшой сборник небольших нюансов...

Статус
В этой теме нельзя размещать новые ответы.

Jerry_Nikolas

Новичок
Небольшой сборник нюансов, дополнений, фишек, распостраннённых ошибок. Здесь описаны тонкости, и некоторые хитрости, которые могут помочь Вам в написании кода, оптимизации, и тому подобному. Взято из личного опыта.
Для начала хотел бы прояснить - если ваш код работает, это далеко не значит что код эффективен.

Нюанс номер один, оператор switch().
Как мы уже знаем, оператор switch это "приемник" условных операторoв if/else и их конструкций, созданный для упрощения и уменьшения величины кода. Условно, давайте назовём switch конструкцией. По сути, switch это упрощенная конструкция операторов if/else(если/иначе). В качестве аргумента, оператору switch необходимо указать перменную, число, функцию, константу или иного рода операцию. Давайте рассмотрим сказанное ранее поближе.


Код:
new value = 0; // объявляем переменную типа int(целочисленную(decimal)) с присвоенным значением 0.
const CONST_VALUE = 15; // объявляем константу, вкратце переменную с неизменяемым значением.
switch(value) // выбор(переменная value)
{
    case 0: { /*code*/ } // используя условный оператор if, это выглядело бы так: если(value равно 0) { }
    case 1..5: { /*code*/ } // используя условный оператор if, это выглядело бы так: если( value больше или равно 1 и value меньше или равно 5)
    case 6..CONST_VALUE: { /*code */ } // if(value >= 6 && value <= CONST_VALUE), если value больше или равно 6 и меньше или равно CONST_VALUE.
    default: {} // Выполняется в случае если ни одно из выше перечисленных условий не является верным.
}
Три самые распостраненные ошибки, связанные с конструкцией switch():

Не всегда, но огромное количество проверок значений с помощью условных операторов можно заменить, даже не используя их.
Оператор switch() следует использовать в случае если проверок действительно много, а не две или или три.
Если нужно проверить значение всего два-три раза, то условного оператора if будет достаточно.
Похожая на вторую ошибку, только со стороны использования if/else. Если у вас, в коде, больше 10 проверок то делать их в if неэффективно. Есть исключения, по типу public OnPlayerPickUpPickup, и его аргумента pickupid.

Cамая распостраненная ошибка всех начинающих программистов/скриптеров/кодеров, по моему мнения это дублирование кода, и не понимание границ видимости. А теперь поподробнее. Пример того чего я имею ввиду, с мода взятого в интернете. Изображение:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!


Это - пример как ни в коем случае делать нельзя. Почему? Потому-что всю эту цепочку проверок, форматирования сообщений, значений, условий и т.п можно было невероятно банально упростить. Пример той же системы, только в нормальном, хоть и не совсем состоянии сознания:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!

Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!


Так-же, как одну из распостраненных ошибок можно выделить неправильные, непонятные названия переменных. Пожалуйста. Воздержитесь от всяких playa, meriya, maya, oja и тому подобных.
Пожалуйста, выбирайте место для создания переменной, что-бы она создавалась в коде всего один раз, и потом использовалась, а не при каждом использовании создавать одну и ту-же переменную.
Воздержитесь от использования for(new i; i<MAX_PLAYERS;i++), используйте foreach.

Примечание: что-бы не спутать %d это decimal, а %i это integer. Оба целочисленные, так что разницы между указанием %d и %i особой нет.
Если было что-то не понятно, задавайте вопросы, отвечу в этой теме. Это далеко не все ошибки и нюансы, которые я хотел написать, но вот я пишу эту тему уже целый час.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу