05.03.2015, 23:19
Programaзгo Modular
A programaзгo modular, tambйm conhecido por Modularidade й um conceito onde o sistema ou software й divido em partes distintas. O conceito de modularidade passa por criar mуdulos com funзхes diferentes e usar um mуdulo principal, por exemplo:
PHP Code:
Soma(x,y) return printf("%d + %d = %d",x,y,(x+y));
Divisao(x,y) return printf("%d/%d = %d",x,y,(x/y));
Multiplicao(x,y) return printf("%d*%d = %d",x,y(x*y));
Subtracao(x,y) return printf("%d-%d = %d",x,y,(x-y));
main()
{
Soma(2,5);
Divisao(2,5);
Multiplicao(2,5);
Subtracao(2,5);
}
Com isto deu-se a criaзгo de bibliotecas, as tais famosas #includes, fazendo com que cada biblioteca fosse responsбvel por uma determinada tarefa. Jб quando nуs programa-mos pawn temos tendкncia a escrever um cуdigo em apenas um ficheiro e o que acontece й que ele torna-se grande e nуs acabamos-nos por perder no meio do cуdigo em si.
As pessoas que usam a modularidade pode-se dizer que sгo pessoas mais organizadas, pessoas que se preocupam com a estйtica do cуdigo e preocupam-se em nгo se perder no meio do oceano. Isto porque se separar-mos tudo й mais fбcil encontrar algo e esse algo por vezes pode ser um bug.
Um exemplo da programaзгo modular й o Paradise City RPG, o Lуs desenvolveu o gamemode em mуdulos tornando o mesmo bastante organizado e fбcil de outros entenderem, nos caso de haverem mais developers claro.
A ideia de como dividir o gamemode em mуdulos depende bastante de cada um e nгo existe uma regra global, eu pessoalmente divido por sistemas, ou seja, se for o sistema de carros й uma coisa, casa outra, jogador outra, por ai a diante.
Agora claro existem questхes tйcnicas como por exemplo, tenho de definir as includes em todos os mуdulos? Nгo.
Para que nгo sabe a funзгo #include serve apenas para incluir o cуdigo em determinado cуdigo ou seja
calculos.inc
PHP Code:
Soma(x,y) return printf("%d + %d = %d",x,y,(x+y));
Divisao(x,y) return printf("%d/%d = %d",x,y,(x/y));
Multiplicao(x,y) return printf("%d*%d = %d",x,y(x*y));
Subtracao(x,y) return printf("%d-%d = %d",x,y,(x-y));
PHP Code:
#include <calculos.inc>
main()
{
Soma(2,5);
Divisao(2,5);
Multiplicao(2,5);
Subtracao(2,5);
}
PHP Code:
Soma(x,y) return printf("%d + %d = %d",x,y,(x+y));
Divisao(x,y) return printf("%d/%d = %d",x,y,(x/y));
Multiplicao(x,y) return printf("%d*%d = %d",x,y(x*y));
Subtracao(x,y) return printf("%d-%d = %d",x,y,(x-y));
main()
{
Soma(2,5);
Divisao(2,5);
Multiplicao(2,5);
Subtracao(2,5);
}
Quando criamos mуdulos nгo й necessбrio estar a incluir as mesmas includes, o que devemos fazer й incluir as includes principais no ficheiro principal (main.pwn) e depois incluir os mуdulos
PHP Code:
#include <a_samp>
#include <sscanf>
#include <zcmd>
//etc..
//mуdulos
#include "modulos/player.pwn"
#include "modulos/vehs.pwn"
#include "modulos/props.pwn"
//etc..
Entгo mas e as callbacks do sa-mp, precisa de fazer hook? Nгo necessariamente.
А um tempo atrбs eu tive uma conversa com o y_less sobre usar o Hook Method 7 e fazer a chamada normal das callbacks, entгo ele disse-me que para fazer a chamada normal das callbacks requere disciplina, ou seja, й necessбrio saber o que se esta a fazer para nгo causar problemas no script e segundo ele o y_hooks e os hook methods foram desenvolvidos para trabalharem em transparкncia, ou seja, eles redefinem as callbacks afim do outro programador nгo se esquecer de fazer a chamada.
Quote:
Originally Posted by Y_Less
I mean if you are explicitly calling callbacks in other files, you have to remember to do so. Hooks were developed as most includes used to state something like:
Quote:
|
main.pwn
PHP Code:
public OnPlayerConnect(playerid)
{
player_OnPlayerConnect(playerid); //chama o mуdulo player.pwn
return 1;
}
PHP Code:
public player_OnPlayerConnect(playerid)
{
//login / registro
return 1;
}
Isto tambйm й um mйtodo bastante usado no LS-RP, por exemplo, eles quando utilizam funзхes como OnPlayerConnect eles fazem desta forma Damian_OnPlayerConnect , Mmartin_OnPlayerConnect, etc..
Isto й uma boa forma de organizaзгo e para quem deseja trabalhar nesta бrea devem levar em consideraзгo isto pois caso contrбrio pode-se tornar complicado trabalhar em equipa.
Nгo sei se o tutorial estб grande coisa, jб nгo faзo а algum tempo, mas pronto, como fizeram-me um pedido decidi vir aqui esclarecer umas dъvidas e expor a minha opiniгo e conhecimento, obrigado a todos!