Pretraga

Pritisnite Enter za pretragu ili Escape za zatvaranje

Zaključano

[Savjet] Local ili Global string?

Započeo Angelos
pre 13 godina
918
pregleda
15
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
Angelos
Street Runner
pre 13 godina
Ako u svakoj komandi primjerice, koristim string za obican tekst (poruka igracu) - new string;... i naravno, ako skripta ima nekih 200 komandi, onda se u svakoj toj komandi radi novi string koji zauzima memoriju...

Dali bi se moglo napraviti jedan global string (na vrh skripte new gstring;) koji bi sluzio samo za format i SCM (slanje poruka) igracu unutar svih komandi (da ne moram na vrh svake komande raditi novi string).

To bi ustedjelo memoriju, a mene zanima dali se to moze napraviti da normalno radi tj. da se stringovi ne pomjesaju ili nesto takvo ..

- Pitanje za iskusnije 🙂
Obrisan korisnik Obrisan korisnik
pre 13 godina
Sad sam bas testirao to(zanimalo me) i radi.Sad ne znam kako ce se ponasati na mnogo komandi ali na 2 radi xD
Dude
Crime Lord
pre 13 godina
možeš i globalni, ali pazi da ne koristiš u nekoj funkciji taj isti...

pr:

new globalniString;

komanda☹️) {//nebitna sintaksa ovdje, vrijedi za bilo koji sistem komandi pa sam zato ovako napisao
globalniString = "BLA";
promjeni();
printf(globalniString);// PRINTAT ĆE "Ha Ha" i to nije ono što si htio jer si koristio globalni još jednom pa npr kod mysql threada možeš napravit
}

stock promijeni() {
globalniString = "Ha ha";
}

Dobar način programiranja:
-ne koristi globalne stringove za više lokalnih funkcija jer kad tad ćeš dobiti neočekivan obrat jer ćeš taj isti string u medjuvremenu promijeniti u nekoj funkciji
Obrisan korisnik Obrisan korisnik
pre 13 godina
jednom koristio globalne stringove i vise nikad, moja preporuka nemoj  😉
Angelos
Street Runner
pre 13 godina
Meni nije potrebno u funkcijama... ja zelim samo oko podrucja komandi, i to samo oko ispisivanja poruka igracu...

Primjer (u dcmdu):

new gstring;

dcmd_prvakomanda(playerid, params[])
{
format(gstring, 128, "Ova komanda se zove %s.", "/prvakomanda");
SCM(gstring, COLOR_WHITE, string);
return 1;
}

dcmd_drugakomanda(playerid, params[])
{
format(gstring, 128, "Ova komanda se zove %s.", "/drugakomanda");
SCM(gstring, COLOR_WHITE, string);
return 1;
}


Dali bi to moglo proci?

Logicno je ako koristim global string u funkciji, a funkciju u komandi u kojoj se koristi global string .. da se moze poklopit i da ne ispisuje sto treba pisat .. 😐
sparrow95
Shot Caller
pre 13 godina
Ako ga formatiraš pravilno ne možeš pogriješit! Dosta će ti smanjit veličinu u globalu. Ako ga koristiš iznad svih callbackova, greške ti mogu stvarat includovi koji imaju istu deklarisanu varijablu..
Dave
Underboss
pre 13 godina
Oprostite sto tu pitam ali dali ja mogu odredit tip varijable npr int nesto ili float nestodrugo jer mi je nekako neprirodno pisat new 😄
Dude
Crime Lord
pre 13 godina
Vrabac wrote on June 22, 2012, 7:36 pm:
Ako ga formatiraš pravilno ne možeš pogriješit! Dosta će ti smanjit veličinu u globalu. Ako ga koristiš iznad svih callbackova, greške ti mogu stvarat includovi koji imaju istu deklarisanu varijablu..


nikad to ne možeš biti siguran, šta se ti sjećaš šta si programirao u kodu prije 2 mjeseca... to je užasno loš način programiranja...

FireMan wrote on June 22, 2012, 10:11 pm:
Oprostite sto tu pitam ali dali ja mogu odredit tip varijable npr int nesto ili float nestodrugo jer mi je nekako neprirodno pisat new 😄

nije ti to C, C++, Java, itd da tako odredjujes varijable, tip odredjujes prije ili poslije imenovanja varijable, a new oznacava kreiranje nove varijable...
sparrow95
Shot Caller
pre 13 godina
Dude wrote on June 22, 2012, 7:36 pm:
Ako ga formatiraš pravilno ne možeš pogriješit! Dosta će ti smanjit veličinu u globalu. Ako ga koristiš iznad svih callbackova, greške ti mogu stvarat includovi koji imaju istu deklarisanu varijablu..


nikad to ne možeš biti siguran, šta se ti sjećaš šta si programirao u kodu prije 2 mjeseca... to je užasno loš način programiranja...

Pa kada formatiraš string, direktno ga formatiraš iznad funkcije koja je u vezi sa tim stringom, ne ubacuješ nikakve funkcije između i ne može bit greška. U ovom tvom primjeru, koja je svrha formatiranja ispred pozivanja funkcije, kada ti je to nebitno?
Dude wrote on June 22, 2012, 6:05 pm:
možeš i globalni, ali pazi da ne koristiš u nekoj funkciji taj isti...

pr:

new globalniString;

komanda☹️) {//nebitna sintaksa ovdje, vrijedi za bilo koji sistem komandi pa sam zato ovako napisao
globalniString = "BLA";
promjeni();
printf(globalniString);// PRINTAT ĆE "Ha Ha" i to nije ono što si htio jer si koristio globalni još jednom pa npr kod mysql threada možeš napravit
}

stock promijeni() {
globalniString = "Ha ha";
}
Dude
Crime Lord
pre 13 godina
Vrabac wrote on June 22, 2012, 7:36 pm:
Ako ga formatiraš pravilno ne možeš pogriješit! Dosta će ti smanjit veličinu u globalu. Ako ga koristiš iznad svih callbackova, greške ti mogu stvarat includovi koji imaju istu deklarisanu varijablu..


nikad to ne možeš biti siguran, šta se ti sjećaš šta si programirao u kodu prije 2 mjeseca... to je užasno loš način programiranja...

Pa kada formatiraš string, direktno ga formatiraš iznad funkcije koja je u vezi sa tim stringom, ne ubacuješ nikakve funkcije između i ne može bit greška. U ovom tvom primjeru, koja je svrha formatiranja ispred pozivanja funkcije, kada ti je to nebitno?
Dude wrote on June 22, 2012, 6:05 pm:
možeš i globalni, ali pazi da ne koristiš u nekoj funkciji taj isti...

pr:

new globalniString;

komanda☹️) {//nebitna sintaksa ovdje, vrijedi za bilo koji sistem komandi pa sam zato ovako napisao
globalniString = "BLA";
promjeni();
printf(globalniString);// PRINTAT ĆE "Ha Ha" i to nije ono što si htio jer si koristio globalni još jednom pa npr kod mysql threada možeš napravit
}

stock promijeni() {
globalniString = "Ha ha";
}


lega nikad ti neces biti programer jer mislis da je pawn kod nesto sto je reprezentativno... prvo pravilo dobrog programiranj jeste da uvije, ali bas uvijek zakljucas varijable lokalno i da ih tako koristis ako je to moguce, to je najbolji primjer kod OOP, koje koriste danas svi važniji programski jezici koji imaju i definiranje varijabli kao takve, da ne bude pogrešaka...

private $varijabla;//php primjer, varijabla je zakljucana unutar klase i mozes dobiti njezinu vrijednost samo preko funkcije kocu ces napraviti, direktno ti nije dospuna
VrijednostVarijable() { return $varijabla; }

ovo o čemu ti pričaj je direktno programiranje liniju za linijom pa tako neces pogrijesiti, ali to je od koda, ima ga previse i brze nikad nece raditi od rada sa funkcijama koje ces napraviti...

znaci o cemu ja tu pricam, programiranje je NLRP, lik kopira tonu koda pod svaki case slucaj u switchu, premda je kod gotovo indentican, samo recimo printa drugaciji tekst... goreg programiranja/skriptanja vec dugo nisam vidio...

Kad programiras uvijek gledas da minimaliziras kod i da gdje je moguce napravise funkcije koje ces pozivati vise puta, brzina je jednaka, a zauzece memorije je puno manje, ali opet napominjem radom sa varijablama lokalno... sreća je vaša što je samp single threaded, jer bi bilo teškog sranja s takvim radom, a ovdje je najbolji način takvog sranja rada s istim stringom unutar threada u mysql pluginu...
Johnâ„¢
Godfather
pre 13 godina
Koristi globalnu varijablu. Ja osobno imam jednu funkciju koja odmah i formatira tekst ako treba, tako da imam odmah i, ajmo reć', built-in format funkciju u SCM. I dosad nikakvih problema nije bilo.
sparrow95
Shot Caller
pre 13 godina
Dude wrote on June 23, 2012, 10:54 am:
lega nikad ti neces biti programer jer mislis da je pawn kod nesto sto je reprezentativno... prvo pravilo dobrog programiranj jeste da uvije, ali bas uvijek zakljucas varijable lokalno i da ih tako koristis ako je to moguce, to je najbolji primjer kod OOP, koje koriste danas svi važniji programski jezici koji imaju i definiranje varijabli kao takve, da ne bude pogrešaka...

private $varijabla;//php primjer, varijabla je zakljucana unutar klase i mozes dobiti njezinu vrijednost samo preko funkcije kocu ces napraviti, direktno ti nije dospuna
VrijednostVarijable() { return $varijabla; }

ovo o čemu ti pričaj je direktno programiranje liniju za linijom pa tako neces pogrijesiti, ali to je od koda, ima ga previse i brze nikad nece raditi od rada sa funkcijama koje ces napraviti...

znaci o cemu ja tu pricam, programiranje je NLRP, lik kopira tonu koda pod svaki case slucaj u switchu, premda je kod gotovo indentican, samo recimo printa drugaciji tekst... goreg programiranja/skriptanja vec dugo nisam vidio...

Kad programiras uvijek gledas da minimaliziras kod i da gdje je moguce napravise funkcije koje ces pozivati vise puta, brzina je jednaka, a zauzece memorije je puno manje, ali opet napominjem radom sa varijablama lokalno... sreća je vaša što je samp single threaded, jer bi bilo teškog sranja s takvim radom, a ovdje je najbolji način takvog sranja rada s istim stringom unutar threada u mysql pluginu...

Upravu si! Cilj i jest minimizacija koda i njegova dinamičnost. Pravljenje includova i povezivanje u php-u je ekvivalentnost pravljenju callbackova koje ces uvezat u pawnu. To si upravu i razumijem te. Jednu globalnu varijablu, kako si reko, je besmisleno pravit, ali minimizirat sa 10 stringovnih varijabli na jednu je globalno minimizacija koda?? Ako ćeš imat 20 funkcija pod "OnPlayerCommandText" i za svaku ćeš kreirat posebno novi string(koji ćeš editovat u ispisu), bolje je da se kreira jedna varijabla, koja će se formatirat? Mislim da je njeg zanimalo to, direktno za komande, da napravi globalni string koji će upotrebljavat samo kada su komande u pitanju i njihov ispis.
Dude
Crime Lord
pre 13 godina
Vrabac wrote on June 23, 2012, 10:54 am:
lega nikad ti neces biti programer jer mislis da je pawn kod nesto sto je reprezentativno... prvo pravilo dobrog programiranj jeste da uvije, ali bas uvijek zakljucas varijable lokalno i da ih tako koristis ako je to moguce, to je najbolji primjer kod OOP, koje koriste danas svi važniji programski jezici koji imaju i definiranje varijabli kao takve, da ne bude pogrešaka...

private $varijabla;//php primjer, varijabla je zakljucana unutar klase i mozes dobiti njezinu vrijednost samo preko funkcije kocu ces napraviti, direktno ti nije dospuna
VrijednostVarijable() { return $varijabla; }

ovo o čemu ti pričaj je direktno programiranje liniju za linijom pa tako neces pogrijesiti, ali to je od koda, ima ga previse i brze nikad nece raditi od rada sa funkcijama koje ces napraviti...

znaci o cemu ja tu pricam, programiranje je NLRP, lik kopira tonu koda pod svaki case slucaj u switchu, premda je kod gotovo indentican, samo recimo printa drugaciji tekst... goreg programiranja/skriptanja vec dugo nisam vidio...

Kad programiras uvijek gledas da minimaliziras kod i da gdje je moguce napravise funkcije koje ces pozivati vise puta, brzina je jednaka, a zauzece memorije je puno manje, ali opet napominjem radom sa varijablama lokalno... sreća je vaša što je samp single threaded, jer bi bilo teškog sranja s takvim radom, a ovdje je najbolji način takvog sranja rada s istim stringom unutar threada u mysql pluginu...

Upravu si! Cilj i jest minimizacija koda i njegova dinamičnost. Pravljenje includova i povezivanje u php-u je ekvivalentnost pravljenju callbackova koje ces uvezat u pawnu. To si upravu i razumijem te. Jednu globalnu varijablu, kako si reko, je besmisleno pravit, ali minimizirat sa 10 stringovnih varijabli na jednu je globalno minimizacija koda?? Ako ćeš imat 20 funkcija pod "OnPlayerCommandText" i za svaku ćeš kreirat posebno novi string(koji ćeš editovat u ispisu), bolje je da se kreira jedna varijabla, koja će se formatirat? Mislim da je njeg zanimalo to, direktno za komande, da napravi globalni string koji će upotrebljavat samo kada su komande u pitanju i njihov ispis.

opet krivo govoris, nikad ali bas nikad ne radis sa globalnom varijablom...

kod OOP se takav nacin niti ne koristi, a niti jednu ozbiljniju aplikaciju proceduralnim danas vise neces moc napravit...
sparrow95
Shot Caller
pre 13 godina
Dude wrote on June 23, 2012, 12:28 pm:
opet krivo govoris, nikad ali bas nikad ne radis sa globalnom varijablom...

kod OOP se takav nacin niti ne koristi, a niti jednu ozbiljniju aplikaciju proceduralnim danas vise neces moc napravit...


Iskusni si, ne proturječim ti se. Ali zar ovo što ja govorim nije apstraktna klasa OOP-a ?
Dave
Underboss
pre 13 godina
Steta sto PAWN objektni jezik,sa klasama i objektima je po meni puno lakse radit.

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava