plakapenka
Специалист
Здаров
В этой теме разберем одно из заблуждений относительно написания скриптов на pawn.
А именно:
Весь код лучше записывать в одну строку?
Не стоит думать, что если строк больше ,то код будет выполняться дольше.
Pawn - компилируемый язык, а это значит, что при нажатии на кнопку компиляции ваш код в amx файле будет выглядеть уже совсем не так, как вы его записывали.
А то, был он написан в одну строку, или несколько, никак не повлияет на финальный вид.
Вообще, конечно, стиль кода - это отдельная и очень долгая история. Но вот вам еще пару примеров, как красиво писать код:
Ах дааа, чуть не забыл
Специально для Pawno-Info.RU
Не разрешается копирование данной статьи на других ресурсах без разрешения автора.
В этой теме разберем одно из заблуждений относительно написания скриптов на pawn.
А именно:
Весь код лучше записывать в одну строку?
Конечно нет
Не стоит думать, что если строк больше ,то код будет выполняться дольше.
Pawn - компилируемый язык, а это значит, что при нажатии на кнопку компиляции ваш код в amx файле будет выглядеть уже совсем не так, как вы его записывали.
А то, был он написан в одну строку, или несколько, никак не повлияет на финальный вид.
Напишем кусок кода:
Скомпилируем его и посмотрим что же получилось в AMX:
А теперь такой же код, но в одну строку:
AMX:
Как видите, разницы ноль ? ?
C++:
#include <a_samp>
#include <core>
main()
{
}
enum pInfo
{
pCash
}
new pData[MAX_PLAYERS][pInfo];
public OnPlayerConnect(playerid)
{
give_me_u_money(playerid);
}
stock give_me_u_money(playerid)
{
if(pData[playerid][pCash] < 500)
{
SendClientMessage(playerid, 0xFFFFFFFF, "Недостаточно средств!");
return 1;
}
pData[playerid][pCash] -= 500;
}
C:
;File version: 8
;Flags: compact-encoding no-checks
00000000 halt 00000000
00000008 proc
0000000c zero.pri
00000010 retn
00000014 proc ; OnPlayerConnect
00000018 push.s 0000000c
00000020 push.c 00000004
00000028 call 00000038
00000030 zero.pri
00000034 retn
00000038 proc
0000003c zero.alt
00000040 load.s.pri 0000000c
00000048 idxaddr
0000004c move.alt
00000050 load.i
00000054 add
00000058 load.i
0000005c const.alt 000001f4
00000064 jsgeq 000000a8
0000006c push.c 00001f40
00000074 push.c ffffffff
0000007c push.s 0000000c
00000084 push.c 0000000c
0000008c sysreq.c 00000000 ; SendClientMessage
00000094 stack 00000010
0000009c const.pri 00000001
000000a4 retn
000000a8 zero.alt
000000ac load.s.pri 0000000c
000000b4 idxaddr
000000b8 move.alt
000000bc load.i
000000c0 add
000000c4 push.pri
000000c8 load.i
000000cc const.alt 000001f4
000000d4 sub
000000d8 pop.alt
000000dc stor.i
000000e0 zero.pri
000000e4 retn
C++:
#include <a_samp>
#include <core>
main(){ }
enum pInfo
{
pCash
}
new pData[MAX_PLAYERS][pInfo];
public OnPlayerConnect(playerid){ give_me_u_money(playerid); }
stock give_me_u_money(playerid) { if(pData[playerid][pCash] < 500) {SendClientMessage(playerid, 0xFFFFFFFF, "Недостаточно средств!"); return 1;} pData[playerid][pCash] -= 500; }
C:
;File version: 8
;Flags: compact-encoding no-checks
00000000 halt 00000000
00000008 proc
0000000c zero.pri
00000010 retn
00000014 proc ; OnPlayerConnect
00000018 push.s 0000000c
00000020 push.c 00000004
00000028 call 00000038
00000030 zero.pri
00000034 retn
00000038 proc
0000003c zero.alt
00000040 load.s.pri 0000000c
00000048 idxaddr
0000004c move.alt
00000050 load.i
00000054 add
00000058 load.i
0000005c const.alt 000001f4
00000064 jsgeq 000000a8
0000006c push.c 00001f40
00000074 push.c ffffffff
0000007c push.s 0000000c
00000084 push.c 0000000c
0000008c sysreq.c 00000000 ; SendClientMessage
00000094 stack 00000010
0000009c const.pri 00000001
000000a4 retn
000000a8 zero.alt
000000ac load.s.pri 0000000c
000000b4 idxaddr
000000b8 move.alt
000000bc load.i
000000c0 add
000000c4 push.pri
000000c8 load.i
000000cc const.alt 000001f4
000000d4 sub
000000d8 pop.alt
000000dc stor.i
000000e0 zero.pri
000000e4 retn
Как видите, разницы ноль ? ?
!! Но обратите внимание, насколько первый кусок кода приятнее смотрится !!
Итог:
Всегда пишите так, чтобы это было приятно читать ЧЕЛОВЕКУ. Машине всё равно, в одну вы строку напишете или в пять/десять/двадцать.
Вообще, конечно, стиль кода - это отдельная и очень долгая история. Но вот вам еще пару примеров, как красиво писать код:
C++:
stock give_me_u_money(playerid) {
if(pData[playerid][pCash] < 500) {
SendClientMessage(playerid, 0xFFFFFFFF, "Недостаточно средств!");
return 1;
}
pData[playerid][pCash] -= 500;
}
C++:
stock give_me_u_money(playerid)
{
if(pData[playerid][pCash] < 500)
{
SendClientMessage(playerid, 0xFFFFFFFF, "Недостаточно средств!");
return 1;
}
pData[playerid][pCash] -= 500;
}
C++:
stock give_me_u_money(playerid)
{
if(pData[playerid][pCash] < 500)
{
SendClientMessage(playerid, 0xFFFFFFFF, "Недостаточно средств!");
return 1;
}
pData[playerid][pCash] -= 500;
}
Ах дааа, чуть не забыл
Специально для Pawno-Info.RU
Не разрешается копирование данной статьи на других ресурсах без разрешения автора.
Последнее редактирование:
