[Tutorial] Dicas de Organizaзгo
#1

Dicas de Organizaзгo


A organizaзгo nуs cуdigos й uma coisa fundalmental, porйm nгo obrigatуria, mas digamos que vocк participa em uma comunidade e quer expor o seu trabalho й necessбrio haver uma organizaзгo visto que ninguйm й obrigado a descobrir o que й que certa coisa й e/ou faz. Isto tambйm й aplicado para quem quer trabalhar na бrea de programaзгo, quando se trabalha nesta бrea raramente estamos sozinhos, ou seja, nуs estamos a desenvolver algo com uma equipa e й necessбrio que exista uma organizaзгo entre ela, pois se o cуdigo й feito а maneira de um pode haver bastante conflitos na hora de ler. Apуs esta introduзгo vamos ao que interessa.

Quando desenvolvemos um projeto, seja qual for ele, й necessбrio organizarmos os nossos ficheiros. Nуs nгo somos obrigados a escrever um cуdigo no mesmo ficheiro, desta forma podemos criar vбrios ficheiros responsбveis por diversas coisas, por exemplo:
Temos um gamemode e o que queremos fazer de inicio й um sistema de login, sistema de admin e um sistema de casas.
Em vez de escrevermos tudo em sу um ficheiro nуs poderemos dividir estes sistemas em 3 ficheiros, da seguinte forma:
  • user.p
    • Responsбvel pelo gerenciamento dos dados do jogador (Login, Registro, Salvamento, etc...)
  • admin.p
    • Responsбvel pelos comandos e sistemas de administrador
  • casas.p
    • Responsбvel pelos sistemas de casa (Compra de casa, Salvamento de casa, etc...)
Nota: No pawn tambйm й possнvel usar a extensгo .p em vez de .pwn

Entгo mas como й que eu posso fazer esse tipo de ficheiros se no sa-mp server sу tem a pasta gamemodes?

Bem primeiro vocк pode criar uma pasta e colocar lб os ficheiros, tambйm pode colocar na pasta includes e atй gravar os ficheiros como .inc em vez de .p , isto depende da organizaзгo e intrepretaзгo de cada um.

Eu pessoalmente quando desenvolvo projetos usando a linguagem PAWN eu costumo criar uma pasta e lб coloco as seguintes pastas:
  • bin: Responsбvel por conter o ficheiro .amx do projeto
  • pawno: Responsбvel por ter a pasta includes e o compilador e editor
    • ...includes: Responsбvel pelas includes do sa-mp ( apenas ficheiros .inc)
  • systems: Responsбvel pelos ficheiros de sistema ( ex: admin.p )
  • plugins: Responsбvel pelas includes de plugins do sa-mp ( apenas ficheiros .inc)
Por fim eu coloco o ficheiro principal como, main.pwn na pasta e para compilar basta criar um ficheiro batch que executa o compilador e compila o ficheiro main.pwn e move para a pasta bin.

Exemplo de um ficheiro .bat:
Код:
pawno\pawncc.exe ficheiro.pwn -r -w
move ficheiro.amx bin
pause
Lembrando que existem diversos parвmetros no compilador mas isso cabe a vocк decidir quais usar.

Como podem ver este modo de organizaзгo pode ser bastante ъtil e eficaz, mantйm o seu projeto limpo e organizado e pode ser portбvel.

Uma das coisas fundamentais na programaзгo й comentar, comente o que й necessбrio, pois assim quando vocк abrir ele de um dia para o outro e/ou passar a um colega vai ser mais fбcil para ler o cуdigo.

Caso vocк tenha usado a dica de criar ficheiros por separado tambйm й bastante bom usar keywords, ou seja, para o sistema de admin poderнamos usar o prefixo admin_ dessa forma se fizermos uma funзгo ou variбvel iria ficar admin_AlgumaCoisa , lembrando que isto nгo serб necessбrio se vocк usa variбveis locais, pois estas sгo usadas em apenas uma funзгo.

Outra coisa interessante й pegarmos em uma folha de papel ou um programa e fazermos um diagrama e nele conter todos os sistemas que seriam necessбrios no nosso projeto, dessa forma teremos um cуdigo ainda mais organizado.

Este tуpico nгo й um tutorial em si, mas sim dicas para quem leva a programaзгo a sйrio e gosta de organizaзгo, ninguйm й obrigado a fazer este tipo de organizaзгo, mas й sempre bom sermos organizados.

Espero que gostйm, regradz
Reply
#2

Bastante legal Gonзalo, eu considero a organizaзгo muito importante, seria interessante citar sobre nomenclatura de variбveis, Hungarian notation, etc.
Reply
#3

@Topico
Bem Legal, sempre trazendo coisas novas, parabйns Gonзalo

@Gustavo
Passei a tratar a nomeclaturas de outro modo, so mudo a nomeclatura pra _@str ou @_str quando estou a fazer include pra nгo dar warning's no code do usuario que baixar.
Reply
#4

Parabens, bom tutorial sem duvida a organizaзгo e importante.
Reply
#5

Quote:
Originally Posted by BlueX
Посмотреть сообщение
Em vez de escrevermos tudo em sу um ficheiro nуs poderemos dividir estes sistemas em 3 ficheiros, da seguinte forma:
  • user.p
    • Responsбvel pelo gerenciamento dos dados do jogador (Login, Registro, Salvamento, etc...)
  • admin.p
    • Responsбvel pelos comandos e sistemas de administrador
  • casas.p
    • Responsбvel pelos sistemas de casa (Compra de casa, Salvamento de casa, etc...)
ja tinha pensado nisso mas nunca experimentei

Otimas dicas
Reply
#6

Bem bacanas essas dicas, me ajudara bastante.
Reply
#7

Quote:
Originally Posted by Dolby
Посмотреть сообщение
Bastante legal Gonзalo, eu considero a organizaзгo muito importante, seria interessante citar sobre nomenclatura de variбveis, Hungarian notation, etc.
Sim, eu nгo referi a nomenclatura, provavelmente em breve irei referir isso no tutorial

Quote:
Originally Posted by DanDRT
Посмотреть сообщение
@Topico
Bem Legal, sempre trazendo coisas novas, parabйns Gonзalo

@Gustavo
Passei a tratar a nomeclaturas de outro modo, so mudo a nomeclatura pra _@str ou @_str quando estou a fazer include pra nгo dar warning's no code do usuario que baixar.
A minha ideia й mesmo essa, trazer novos conceitos.

Sobre a nomenclatura que vocк faz de _@str eu tambйm faзo isso, mas й apenas uso no pawn visto que em C++ vocк pode usar namespace , dessa forma vocк pode fazer.

PHP код:
#include <iostream>
namespace short var = 25; }
namespace 
short var = 12; }
int main() { std::cout << "A: " << A::var << " B: " << B::var << std::endl; return 1;} 
Isto й bastante ъtil, pois jб nгo й necessбrio usar esse tipo de simbologia.

Quote:
Originally Posted by PT
Посмотреть сообщение
Parabens, bom tutorial sem duvida a organizaзгo e importante.
Sim, desta forma todos podemos-nos entender

Quote:
Originally Posted by iTzDemon
Посмотреть сообщение
ja tinha pensado nisso mas nunca experimentei

Otimas dicas
Entгo, agora podes experimentar, acredita que vale mesmo a pena.

Obrigado

Quote:
Originally Posted by XxFaTaLxX
Посмотреть сообщение
Bem bacanas essas dicas, me ajudara bastante.
Й essa a minha intenзгo, obrigado
Reply
#8

Em codigos grandes й interessante, mas vamos lembrar que isto й Pawn, organizar por completo (ou em alguns casos "querer embelezar" o cуdigo) seria uma perda de tempo.

Bom tuto
Reply
#9

No pawn nao temos classes nem podemos referenciar outro script, no final acaba ficando tudo a mesma salada, so que mais bonitinha e servida em porcoes menores. No RPG que eu desenvolvi do 0 eu fiz um arquivo para cada sistema (casas, banco, empresas, orgs, funcoes gerais, comandos e o arquivo principal tinha as includes, defines, variaveis e callbacks), isso deixava bastante organizado porem um pouco mais demorado para se trabalhar. Fiz a divisao do meu GM inspirado no GM que voce estava desenvolvendo na epoca (final do ano passado).

De qualquer forma, o tutorial esta exemplar. +4 reps.

Creio que este sera meu ultimo post por um bom tempo, pelo menos ate eu terminar alguma versao do meu jogo, que com certeza divulgarei aqui. Eh isso ai, mina sayonara!

Reply
#10

Quote:
Originally Posted by ipsBruno
Посмотреть сообщение
Em codigos grandes й interessante, mas vamos lembrar que isto й Pawn, organizar por completo (ou em alguns casos "querer embelezar" o cуdigo) seria uma perda de tempo.

Bom tuto
Sim, eu uso essa organizaзгo de arquivos em cуdigos grandes, mas costumo comentar tudo e usar a minha nomenclatura, visto que isto й universal.

Quote:
Originally Posted by Juniiro3
Посмотреть сообщение
Eu gostei bastante desse mйtodo de organizaзгo, mas com o GM todo fragmentado em vбrios arquivos com os sistemas, eles seriam usados como FS? Nгo ficou muito claro.
Nгo, eles serгo usados como #include , visto que eles sгo uma partiзгo do sistema principal vocк pode usar #include e sim й possнvel colocar #include de ficheiros .p

Quote:
Originally Posted by Kuddy
Посмотреть сообщение
No pawn nao temos classes nem podemos referenciar outro script, no final acaba ficando tudo a mesma salada, so que mais bonitinha e servida em porcoes menores. No RPG que eu desenvolvi do 0 eu fiz um arquivo para cada sistema (casas, banco, empresas, orgs, funcoes gerais, comandos e o arquivo principal tinha as includes, defines, variaveis e callbacks), isso deixava bastante organizado porem um pouco mais demorado para se trabalhar. Fiz a divisao do meu GM inspirado no GM que voce estava desenvolvendo na epoca (final do ano passado).

De qualquer forma, o tutorial esta exemplar. +4 reps.

Creio que este sera meu ultimo post por um bom tempo, pelo menos ate eu terminar alguma versao do meu jogo, que com certeza divulgarei aqui. Eh isso ai, mina sayonara!

Sim, claro, as classes ajudam bastante, principalmente na organizaзгo e na nomenclatura, porque usando classes vocк nгo tem de usar nomes bizarros visto que a funзгo X pertence a uma classe e a mesma funзгo pode pertencer a outra classe porйm estгo distintas. Eu acho que eu tinha te mostrado o gm, deixa bastante organizado, demora um pouco mais, mas garanto que quando vocк quer procurar algo jб sabe onde ir enquanto em um gm com 50k vocк tem que dar scroll ainda por cima se nгo se lembra do nome da funзгo xD

Obrigado

Estou esperando esse jogo, boa sorte mano!
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)