Raised This Month: $ Target: $400
 0% 

Buenos habitos de codificación.


  
 
 
Thread Tools Display Modes
Author Message
YakumoHiratsuhi
Veteran Member
Join Date: Dec 2010
Location: Dreαmlαnd.
Old 02-01-2012 , 20:51   Buenos habitos de codificación.
#1

Bueno sin rodeos empecemos, esto es para gente que tiene codigos que no se entienden, es OPCIONAL, si no te gusta no me importa.

Reconocimiento de variables
Todos saben que es una variable, sino no se para que te molestas en leer este tema e.e cada variable (dependiendo de que sea) tiene que tener
algo que puedan hacer para reconocerla.

por ejemplo tito[33] una variable de 32 celdas, sabes para que mierda es?
seria mejor nombrarla g_soytito[33] para saber que es una global y saber que eres tito cuando esta seteada en true o en false (dada la situacion)
cada quien entiende su propio lenguaje, pero si apenas empiezas empieza con pie derecho y has un codigo que puedas entender tu.
puedes usarlo para identicar variables globales, ahora unos cuantos tipos de organización de tipos de codigo.

g_ <-- global. (se declara hasta el tope del plugin, puede ser cualquier de abajo)
ent_ <-- entidad. (entero, se declara --> new ent)
sz_ <-- cadena/string. (caracteres, se declara --> new string[32])
fl_ <-- punto flotante. (fraccional, se declara --> new Float:flshit)
ed_ <-- edicto. (entero, se declara --> new edict)
tr_ <-- trace. (traceresult, se declara --> new tr2:trshit)

nota: aunque tambien se pueda declarar enteros usando int:variable, no es necesario el keyword, cuando una variable se crea sin keyword automaticamente es entero.

Reduccion de terminos
Aveces el compilador es muy popo y a la hora de realizar calculos algebraicos o aritmeticos falla haciendo los calculos, nunca encuentra
lo que tu estas buscando y eso es un problema (almenos para ti)

no es lo mismo (3 terminos)
PHP Code:
new get_pcvar_num(cvar_somecontrolvariable)^power(zy) - sqroot(somevar
a hacer esto: (3 terminos reducidos a 2 por parentesis)
PHP Code:
new get_pcvar_num(cvar_somecontrolvariable)^* (power(zy) - sqroot(somevar)) 
si el compilador por alguna razon comete un error tu condición dara false y tu codigo tendra problemas de implementacion de otra manera si
el compilador sigue las reglas algebraicas y suma primero los parentesis, osea power(z, y) - sqroot(somevar) haciendo que su resultado se multiplique
por la variable obtenida de la funcion get_pcvar_num() haciendolo un poco más eficiente, ahora tomando en cuenta esa x, podemos seguir
haciendo calculos mucho más avanzados sin que el compilador cometa errores.

reducido un 97%
PHP Code:
if(z^2
expansión
PHP Code:
if(get_pcvar_num(cvar_somecontrolvariable)^power(zy) - sqroot(somevar) < z^2
lo mismo puedes hacer con sentencias, puedes emparentarlas y automaticamente serian como otro if dentro de un if (si es que me entiendes).
ejemplo:
PHP Code:
if(g_soytito[index0r] || (get_bitsum(somebit) & BIT_SHIT)) 
la segunda sentencia esta emparentada y como los bits son 0 o 1, es igual a esto.
PHP Code:
if(g_soytito[index0r] || (0)) // esto seria si tira false el get_bitsum() 
ahora con variables
PHP Code:
if(g_soytito[index0r] || (g_popo[index0r] && g_popo2[index0r] && g_popo3[index0r]) 
es lo mismo que con el bitsum, si una de esas 3 sentencias emparentadas da false, automaticamente el parentesis es 0 de otra forma es 1.
ahora con OR
PHP Code:
if(g_soytito[index0r] || (g_popo[index0r]==|| !g_popo2[index0r] || g_popo3[index0r]==2
igualmente, si g_popo es igual a 4 O g_popo2 esta en terminos negativos O g_popo3 es igual a 2, automaticamente el parentesis tirara 1, otra parte 0

Comentarios
Esto es corto, pero te puede ayudar a veces cuando haces un codigo MUY AVANZADO y a los 2 dias no recuerdas que mierda hace
igual te puedes recordar que debes bugfixearlo o algo así, recuerda siempre poner comentarios en cosas que no entiendes para que cuando
tu o otras personas esten debugeando puedan solucionar el problema rapido, que es lo que pasa o que es lo que hace ese pequeño bloque de codigo
por el peso compilado no te apures, los comentarios no se incluyen en el .amxx (nadamas en el .sma)

PHP Code:
 // Esto sirve para hacer que se muera algun babas de alliedmodders usando SQL
// Oh mira lo detecto y le dio slay ahora esta muerto nadamas me falta matarlo en vida real e.e 
public fw_kill_alliedmodders_whore(whoreidwhy
Organización de las funciones
Esto es importante, talvez no muy relevante con el consumo de recursos pero debes tenerlo en cuenta, considerando que ahora
todos los servidores son extremadamente poderosos, pero bueno, cada quien, existe algo que se llama branching, que es cuando un bloque
de codigo llama a una funcion que esta lejos de donde se llamo.

PHP Code:
// Linea 208
function()
{
    
// This sucks
    
function2()
}

// Linea 8792
function2()
{
    
// Shit here..

esto realmente no influye nada asi que mejor lo dejo, tomelo en cuenta el que quiera hacerlo, pero sigamos, otra cosa es que el codigo este organizado para que eviten tener stocks arriba
o tenerlos abajo, decidanse en un lugar donde poner todas sus cosas.

PHP Code:
/* Plugin Initialization */
// Shit here..

/* Forwards */
// Amx events
// Fakemeta forwards
// Hamsandwich forwards
// Engine forwards

/* Main functions */
// Shit here..

/* Other functions */
// Shit here..

/* Tasks */
// Shit here..

/* Large condition functions */
// Shit here..

/* Stocks */
// Shit here.. 
talvez no sea una manera de evitar el branching, pero el codigo queda bastante organizado y cuando necesites debugear algo en menos de 3
segundos sabes donde esta sin tener que buscar en tOOOdOOO el codigo.

Indents
Cuando el codigo se separa por corchetes, es necesario indentearlo, para saber que pertenece a un diferente bloque de codigo.
se puede usar el autoidenter (en AMXx Studio) o el Ident Code (Pawn Studio) para auto identear todos tus corchetes.

ejemplo de mal ident
PHP Code:
public func(idother)
{
do
{
set_user_health(id200)
}
while(
is_user_alive(id))

-->
PHP Code:
public func(idother)
{
    do
    {
        
set_user_health(id200)
    }
    while(
is_user_alive(id))

Nombrando funciones/forwards
Esto es donde mucha gente se pierde, debajo de la organización debes saber que nombre ponerle a tu forward para reconocerla más rapido.
ejemplos de mal nombramiento (esto es de cada quien, pueden nombrarlo como sea, ami que)

PHP Code:
RegisterHam(Ham_Weapon_SendWeaponAnim"weapon_xm1014""send_anims"1
nisiquiera sabran que esta en post ni de que arma es, ahora -->
PHP Code:
RegisterHam(Ham_Weapon_SendWeaponAnim"weapon_xm1014""fw_SendShotgunAnim_Post"1
ahora nos damos cuenta por logica que es una forward que se ejecuta despues de haber enviado la animacion de una escopeta.

bueno creo que aqui llega ya me aburri e.e el que le gusto comente y el que no tambien.
__________________
"Podra parecer ridiculo o imposible, pero este es el camino que seguimos los verdaderos hombres, si hay un muro en el camino, lo derribamos, si no hay camino, haremos uno, con nuestras propias manos, porque el magma de nuestro corazón arde en llamas."

Last edited by YakumoHiratsuhi; 02-02-2012 at 09:31. Reason: añadidas mas porkerias
YakumoHiratsuhi is offline
Send a message via MSN to YakumoHiratsuhi
Neeeeeeeeeel.-
Some Guy Yellin'
Join Date: Jul 2010
Location: Argentina
Old 02-01-2012 , 21:47   Re: Buenos habitos de codificación.
#2

Buen tuto

Para que se usa un trace?
__________________
Neeeeeeeeeel.- is offline
Send a message via Skype™ to Neeeeeeeeeel.-
Kiske
Veteran Member
Join Date: May 2009
Old 02-01-2012 , 22:48   Re: Buenos habitos de codificación.
#3

http://forums.alliedmods.net/showthread.php?t=85274
Y por cierto, no son hábitos de codificación, son de programación.
Kiske is offline
Send a message via Skype™ to Kiske
YakumoHiratsuhi
Veteran Member
Join Date: Dec 2010
Location: Dreαmlαnd.
Old 02-02-2012 , 09:16   Re: Buenos habitos de codificación.
#4

Quote:
Originally Posted by Kiske View Post
http://forums.alliedmods.net/showthread.php?t=85274
Y por cierto, no son hábitos de codificación, son de programación.
mientras se entienda sigue siendo lo mismo, alrato añado lo de hawk, no cualquiera sabe ingles. d:

Quote:
Originally Posted by Neeeeeeeeeel.- View Post
Buen tuto

Para que se usa un trace?
para hacer calculos de un punto a otro, como las lasermines, usan un trace para determinar hasta donde llegara el rayo de la mina.
__________________
"Podra parecer ridiculo o imposible, pero este es el camino que seguimos los verdaderos hombres, si hay un muro en el camino, lo derribamos, si no hay camino, haremos uno, con nuestras propias manos, porque el magma de nuestro corazón arde en llamas."

Last edited by YakumoHiratsuhi; 02-02-2012 at 09:36.
YakumoHiratsuhi is offline
Send a message via MSN to YakumoHiratsuhi
Old 02-02-2012, 09:17
YakumoHiratsuhi
This message has been deleted by YakumoHiratsuhi. Reason: dp
shinoda
Spanish Moderator
Join Date: Nov 2009
Location: ag_crossfire
Old 02-03-2012 , 18:29   Re: Buenos habitos de codificación.
#5

¿Alguien entendió algo?
__________________
Oh hell no this shit is awesome !!!
shinoda is offline
Send a message via MSN to shinoda Send a message via Skype™ to shinoda
lucas_7_94
Leche Loco
Join Date: Mar 2009
Location: Argentina
Old 02-03-2012 , 18:34   Re: Buenos habitos de codificación.
#6

sz_ <-- cadena/string. (caracteres, se declara --> new string[32])

No , se usa

new szMyString[ 33 ] , el mini prefix sz es para ya saber que es un string.

tambien te falto i xD , new iValue.
__________________
ATWWMH - MiniDuels
Madness is like gravity, just need a little push.
lucas_7_94 is offline
Send a message via Skype™ to lucas_7_94
Chaato
Senior Member
Join Date: Jun 2011
Location: C://Windows/Arg/MyHome
Old 02-03-2012 , 18:52   Re: Buenos habitos de codificación.
#7

yo pongo todo como qiero , lo unico a lo que le pongo bien para recordar es a los floats que les agrego "fl" Ej: flAlgo
__________________
[LaserMines] - Creador & Porcentaje de vida: Click Me
Chaato is offline
Send a message via MSN to Chaato Send a message via Skype™ to Chaato
YakumoHiratsuhi
Veteran Member
Join Date: Dec 2010
Location: Dreαmlαnd.
Old 02-03-2012 , 19:52   Re: Buenos habitos de codificación.
#8

Quote:
Originally Posted by shinoda View Post
¿Alguien entendió algo?
ni yo entendi, hable demasiado licenciado.

Quote:
Originally Posted by lucas_7_94 View Post
sz_ <-- cadena/string. (caracteres, se declara --> new string[32])

No , se usa

new szMyString[ 33 ] , el mini prefix sz es para ya saber que es un string.

tambien te falto i xD , new iValue.
pito, a nadie le importan los enteros.

Quote:
Originally Posted by Chaato View Post
yo pongo todo como qiero , lo unico a lo que le pongo bien para recordar es a los floats que les agrego "fl" Ej: flAlgo
soqe e.e

gracias a todos por sus respuestas, me levantan la moral
__________________
"Podra parecer ridiculo o imposible, pero este es el camino que seguimos los verdaderos hombres, si hay un muro en el camino, lo derribamos, si no hay camino, haremos uno, con nuestras propias manos, porque el magma de nuestro corazón arde en llamas."
YakumoHiratsuhi is offline
Send a message via MSN to YakumoHiratsuhi
Chaato
Senior Member
Join Date: Jun 2011
Location: C://Windows/Arg/MyHome
Old 02-04-2012 , 12:31   Re: Buenos habitos de codificación.
#9

Esque somos re tiernos :$.
__________________
[LaserMines] - Creador & Porcentaje de vida: Click Me
Chaato is offline
Send a message via MSN to Chaato Send a message via Skype™ to Chaato
Manu127
Veteran Member
Join Date: Jul 2010
Location: Argentina
Old 02-04-2012 , 20:56   Re: Buenos habitos de codificación.
#10

Un poquito mas de organizacion taria bien (?

Pero igual algo alcance a leer (? no mucho pero bueno jaja Buen tuto.
__________________
Manu127 is offline
Send a message via MSN to Manu127 Send a message via Skype™ to Manu127
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 12:33.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode