Jerry_Nikolas
Новичок
Небольшой сборник нюансов, дополнений, фишек, распостраннённых ошибок. Здесь описаны тонкости, и некоторые хитрости, которые могут помочь Вам в написании кода, оптимизации, и тому подобному. Взято из личного опыта.
Для начала хотел бы прояснить - если ваш код работает, это далеко не значит что код эффективен.
Нюанс номер один, оператор switch().
Как мы уже знаем, оператор switch это "приемник" условных операторoв if/else и их конструкций, созданный для упрощения и уменьшения величины кода. Условно, давайте назовём switch конструкцией. По сути, switch это упрощенная конструкция операторов if/else(если/иначе). В качестве аргумента, оператору switch необходимо указать перменную, число, функцию, константу или иного рода операцию. Давайте рассмотрим сказанное ранее поближе.
Три самые распостраненные ошибки, связанные с конструкцией 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 особой нет.
Если было что-то не понятно, задавайте вопросы, отвечу в этой теме. Это далеко не все ошибки и нюансы, которые я хотел написать, но вот я пишу эту тему уже целый час.
Для начала хотел бы прояснить - если ваш код работает, это далеко не значит что код эффективен.
Нюанс номер один, оператор 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() следует использовать в случае если проверок действительно много, а не две или или три.
Если нужно проверить значение всего два-три раза, то условного оператора 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 особой нет.
Если было что-то не понятно, задавайте вопросы, отвечу в этой теме. Это далеко не все ошибки и нюансы, которые я хотел написать, но вот я пишу эту тему уже целый час.
Последнее редактирование:
