PDA

Просмотр полной версии : [Вопрос] где лучше объявить переменную



DmitriyVasilev
04.03.2019, 19:09
Здравствуйте, куда лучше ставить переменную или создавать каждую по отедльносьи или создать одну сверху всего?

case 1125:
{
if(!response) return 1;
new fmt_str[здесь кол-во ячеек]; //или лучше снизу
switch(listitem)
{
case 0:
{
//new fmt_str[] везде так ставить или одну сверху
format(fmt_str,sizeof(fmt_str), "здесь был %s", тут любое значение);
}
case 1:
{
//new fmt_str[] везде так ставить или одну сверху
format(fmt_str,sizeof(fmt_str), "здесь был %s.....", тут любое значение);
}
}
}

DeimoS
04.03.2019, 20:55
По-хорошему, конечно, для каждого блока кода делать свой массив, если данные из него не нужны за пределами блока. Это и от случайных опечаток спасёт (например, если делать общий массив, ты можешь скопировать код из одного блока в другой, изменить имя массива во всех случаях вызова, кроме одного, и компилятор не укажет на ошибку, ибо для него массив будет существовать).
Но можно и общий сделать. Особенно если этот массив 100% будет использоваться (ну если во всех последующих проверках так или иначе будет происходить работа с массивом).

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

Nexius_Tailer
04.03.2019, 22:26
В случае с созданием её по отдельности в каждом из условий будет дублирование кода, особенно напрягающее, если этих условий много. Но если, как уже выше сказали, ты уверен, что массив при его создании в начале точно будет использован в каждом из условий - юзай один на всех. Хотя конкретно здесь реально не особо и важно.

DmitriyVasilev
30.03.2019, 11:50
а это как - то плохо ( дублирование )??

- - - Добавлено - - -

вот например я тут sendmes меняю на форматы и не знаю сверху одну поставить или в каждое условие
case 1:
{
if(strval(inputtext) == -1)
{
if(strcmp(WorkshopInfo[i][wDeputy1],"None",true) == 0) return SendClientMessage(playerid,COLOR_GREY," Данный слот не занят!"), ShowPlayerDialog(playerid, 6005, DIALOG_STYLE_INPUT, "Нанять рабочего","Введите ид игрока в данное окно\n\nВНИМАНИЕ: Введите -1 для увольнения","Далее","Назад");
new fmt_str[41 + ( -2 + MAX_PLAYER_NAME )]
SendMes(playerid,0x6BB3FFAA,"Вы уволили %s с должности заместителя [1]",WorkshopInfo[i][wDeputy1]), strmid(WorkshopInfo[i][wDeputy1],"None", 0, strlen("None"), 32);
}
else
{
strmid(WorkshopInfo[i][wDeputy1],User[strval(inputtext)][pName], 0, strlen(User[strval(inputtext)][pName]), 32);
SendMes(playerid,0x6BB3FFAA,"Вы приняли %s на должность заместителя [1]",WorkshopInfo[i][wDeputy1]);
SendMes(strval(inputtext),0x6BB3FFAA,"%s принял вас на должность заместителя [1]",User[playerid][pName]);
}
}
case 2:
{
if(strval(inputtext) == -1)
{
if(strcmp(WorkshopInfo[i][wDeputy2],"None",true) == 0) return SendClientMessage(playerid,COLOR_GREY,"Данный слот не занят!"), ShowPlayerDialog(playerid, 6005, DIALOG_STYLE_INPUT, "Нанять рабочего","Введите ид игрока в данное окно\n\nВНИМАНИЕ: Введите -1 для увольнения","Далее","Назад");
SendMes(playerid,0x6BB3FFAA," Вы уволили %s с должности заместителя [2]",WorkshopInfo[i][wDeputy2]), strmid(WorkshopInfo[i][wDeputy2],"None", 0, strlen("None"), 32);
}
else
{
strmid(WorkshopInfo[i][wDeputy2],User[strval(inputtext)][pName], 0, strlen(User[strval(inputtext)][pName]), 32);
SendMes(playerid,0x6BB3FFAA,"Вы приняли %s на должность заместителя [2]",WorkshopInfo[i][wDeputy2]);
SendMes(strval(inputtext),0x6BB3FFAA,"%s принял вас на должность заместителя [2]",User[playerid][pName]);
}
}
case 3:
{
if(strval(inputtext) == -1)
{
if(strcmp(WorkshopInfo[i][wDeputy3],"None",true) == 0) return SendClientMessage(playerid,COLOR_GREY,"Данный слот не занят!"), ShowPlayerDialog(playerid, 6005, DIALOG_STYLE_INPUT, "Нанять рабочего","Введите ид игрока в данное окно\n\nВНИМАНИЕ: Введите -1 для увольнения","Далее","Назад");
SendMes(playerid,0x6BB3FFAA,"Вы уволили %s с должности заместителя [3]",WorkshopInfo[i][wDeputy3]), strmid(WorkshopInfo[i][wDeputy3],"None", 0, strlen("None"), 32);
}
else
{
strmid(WorkshopInfo[i][wDeputy3],User[strval(inputtext)][pName], 0, strlen(User[strval(inputtext)][pName]), 32);
SendMes(playerid,0x6BB3FFAA,"Вы приняли %s на должность заместителя [3]",WorkshopInfo[i][wDeputy3]);
SendMes(strval(inputtext),0x6BB3FFAA,"%s принял вас на должность заместителя [3]",User[playerid][pName]);
}
}
case 4:
{
if(strval(inputtext) == -1)
{
if(strcmp(WorkshopInfo[i][wMechanic1],"None",true) == 0) return SendClientMessage(playerid,COLOR_GREY,"Данный слот не занят!"), ShowPlayerDialog(playerid, 6005, DIALOG_STYLE_INPUT, "Нанять рабочего","Введите ид игрока в данное окно\n\nВНИМАНИЕ: Введите -1 для увольнения","Далее","Назад");
SendMes(playerid,0x6BB3FFAA,"Вы уволили %s с должности механика [1]",WorkshopInfo[i][wMechanic1]), strmid(WorkshopInfo[i][wMechanic1],"None", 0, strlen("None"), 32);
}
else
{
strmid(WorkshopInfo[i][wMechanic1],User[strval(inputtext)][pName], 0, strlen(User[strval(inputtext)][pName]), 32);
SendMes(playerid,0x6BB3FFAA,"Вы приняли %s на должность механика [1]",WorkshopInfo[i][wMechanic1]);
SendMes(strval(inputtext),0x6BB3FFAA,"%s принял вас на должность механика [1]",User[playerid][pName]);
}
}
case 5:
{
if(strval(inputtext) == -1)
{
if(strcmp(WorkshopInfo[i][wMechanic2],"None",true) == 0) return SendClientMessage(playerid,COLOR_GREY,"Данный слот не занят!"), ShowPlayerDialog(playerid, 6005, DIALOG_STYLE_INPUT, "Нанять рабочего","Введите ид игрока в данное окно\n\nВНИМАНИЕ: Введите -1 для увольнения","Далее","Назад");
SendMes(playerid,0x6BB3FFAA,"Вы уволили %s с должности механика [2]",WorkshopInfo[i][wMechanic2]), strmid(WorkshopInfo[i][wMechanic2],"None", 0, strlen("None"), 32);
}
else
{
strmid(WorkshopInfo[i][wMechanic2],User[strval(inputtext)][pName], 0, strlen(User[strval(inputtext)][pName]), 32);
SendMes(playerid,0x6BB3FFAA,"Вы приняли %s на должность механика [2]",WorkshopInfo[i][wMechanic2]);
SendMes(strval(inputtext),0x6BB3FFAA,"%s принял вас на должность механика [2]",User[playerid][pName]);
}
}
case 6:
{
if(strval(inputtext) == -1)
{
if(strcmp(WorkshopInfo[i][wMechanic3],"None",true) == 0) return SendClientMessage(playerid,COLOR_GREY,"Данный слот не занят!"), ShowPlayerDialog(playerid, 6005, DIALOG_STYLE_INPUT, "Нанять рабочего","Введите ид игрока в данное окно\n\nВНИМАНИЕ: Введите -1 для увольнения","Далее","Назад");
SendMes(playerid,0x6BB3FFAA,"Вы уволили %s с должности механика [3]",WorkshopInfo[i][wMechanic3]), strmid(WorkshopInfo[i][wMechanic3],"None", 0, strlen("None"), 32);
}
else
{
strmid(WorkshopInfo[i][wMechanic3],User[strval(inputtext)][pName], 0, strlen(User[strval(inputtext)][pName]), 32);

SendMes(playerid,0x6BB3FFAA," Вы приняли %s на должность механика [3]",WorkshopInfo[i][wMechanic3]);
SendMes(strval(inputtext),0x6BB3FFAA," %s принял вас на должность механика [3]",User[playerid][pName]);
}
}
case 7:
{
if(strval(inputtext) == -1)
{
if(strcmp(WorkshopInfo[i][wMechanic4],"None",true) == 0) return SendClientMessage(playerid,COLOR_GREY," Данный слот не занят!"), ShowPlayerDialog(playerid, 6005, DIALOG_STYLE_INPUT, "Нанять рабочего","Введите ид игрока в данное окно\n\nВНИМАНИЕ: Введите -1 для увольнения","Далее","Назад");
SendMes(playerid,0x6BB3FFAA," Вы уволили %s с должности механика [4]",WorkshopInfo[i][wMechanic4]), strmid(WorkshopInfo[i][wMechanic4],"None", 0, strlen("None"), 32);
}
else
{
strmid(WorkshopInfo[i][wMechanic4],User[strval(inputtext)][pName], 0, strlen(User[strval(inputtext)][pName]), 32);
SendMes(playerid,0x6BB3FFAA,"Вы приняли %s на должность механика [4]",WorkshopInfo[i][wMechanic4]);
SendMes(strval(inputtext),0x6BB3FFAA,"%s принял вас на должность механика [4]",User[playerid][pName]);
}
}
case 8:
{
if(strval(inputtext) == -1)
{
if(strcmp(WorkshopInfo[i][wMechanic5],"None",true) == 0) return SendClientMessage(playerid,COLOR_GREY," Данный слот не занят!"), ShowPlayerDialog(playerid, 6005, DIALOG_STYLE_INPUT, "Нанять рабочего","Введите ид игрока в данное окно\n\nВНИМАНИЕ: Введите -1 для увольнения","Далее","Назад");
SendMes(playerid,0x6BB3FFAA,"Вы уволили %s с должности механика [5]",WorkshopInfo[i][wMechanic5]), strmid(WorkshopInfo[i][wMechanic5],"None", 0, strlen("None"), 32);
}
else
{
strmid(WorkshopInfo[i][wMechanic5],User[strval(inputtext)][pName], 0, strlen(User[strval(inputtext)][pName]), 32);
SendMes(playerid,0x6BB3FFAA,"Вы приняли %s на должность механика [5]",WorkshopInfo[i][wMechanic5]);
SendMes(strval(inputtext),0x6BB3FFAA,"%s принял вас на должность механика [5]",User[playerid][pName]);
}
}
}

DeimoS
30.03.2019, 14:19
Можешь поставить общую.

Дублирование, в основном, плохо лишь с визуальной точки зрения.