[Tutorial] Organizando e Otimizando - Versão de Impressão +- Portal SAMP (https://portalsamp.com) +-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5) +--- Fórum: Guias e Tutoriais (https://portalsamp.com/forumdisplay.php?fid=7) +--- Tópico: [Tutorial] Organizando e Otimizando (/showthread.php?tid=2486) |
Organizando e Otimizando - Dr Editor - 17/06/2022 Organização e Otimização
e a maioria dos passos podem ser aplicados em outras linguagens. Organizando
Indentar o código de forma adequada facilita a leitura e manutenção do código. Indentador: https://tabuladorpawn.000webhostapp.com/index.html
Lembre-se que você é um ser humano e não uma máquina, portanto, mesmo que você seja o responsável pelo código, ainda assim será possível se perder em meio a ele. Considerando isso, sempre que tiver dificuldades na criação de determinado código comente sobre ele ou em determinadas linhas para que em caso de uma manutenção futura você consiga realizar esta tarefa rapidamente e sem dificuldades.
e isso está longe de ser um problema, pelo contrário, isso torna o entendimento mais fácil da finalidade pela qual a variável foi criada, portanto, não economize caracteres. Já falei que não somos máquinas? Pois é. Ela interpreta qualquer código antes de você começar a lê-lo, logo uma nomenclatura boba pode não fazer o código perder o sentido, mas pode sim atrapalhar a sua compreensão.
iniciar esta prática acabamos adicionando várias funções com o mesmo propósito e no fim, mesmo percebendo que se trata de uma função sem utilidade, ainda assim a deixamos permanecer. É sempre interessante fazer uma reanálise no script para limpar este código cuja função ou resultado nunca é utilizado.
É uma discussão válida e a resposta é muito relativa. Alguns enfrentam dificuldades, outros não gostam ou não veem necessidade disso já que não estão trabalhando com um número considerável de linhas. Mas quando falamos em 'programar' devemos estar cientes de que precisaremos lidar com um número de linhas ilimitado, ou seja, devemos estar preparados para inúmeros desafios e o principal, em se tratando de pawn, é: como organizar tudo isso em um único arquivo. Fora desta linguagem, podemos trabalhar com outras onde é possível separar facilmente o código com base em sua função. A lógica se aplica aqui de forma semelhante.
Em muitos sistemas antigos a estrutura de condição IF era muito e ao mesmo tempo mal usada. Alguns casos em específico é possível alternar entre estas estruturas e isso acaba ajudando bastante no entendimento de um código. Certas situações acabam até afetando o desempenho do código e isso será abordado na parte de otimizações. Otimizando
é quando este valor é exagerado de forma desnecessária. Quanto mais células uma variável/array tiver, mais memória ela vai consumir e, por consequência, seu arquivo .amx ficará mais pesado assim como a compilação ficará mais demorada. Busque utilizar um número de células superior, porém próximo do necessário.
Um servidor, de início, dificilmente utiliza a capacidade máxima de cada um dos recursos acima citado (entre outros, até mesmo não nativos). Sempre redefina as definições mais utilizadas e principalmente as que possuem valores maiores para valores próximos ao que o servidor irá utilizar. Isto porque utilizamos estes valores principalmente para loopings e isso retarda o encerramento de uma função que utiliza este recurso.
Portanto, se possível, utilize a livraria FOREACH. Uma livraria utilizada principalmente para jogadores, porém se bem explorada pode agregar muito mais. Caso esteja usando a versão 0.3.7 do SA:MP e não tenha costume de usar a livraria foreach, pode usar como apoio as funções GetPlayerPoolSize, GetVehiclePoolSize e GetActorPoolSize onde ambas retornam o maior ID relacionado a ela. Nos demais casos, é importante ressaltar a relevância do item anterior.
carga contínua desnecessária. Como este é um tema bem específico, vou abordar uma das callbacks mais utilizadas e com ela exemplificar o ponto que quero chegar. É muito comum, por exemplo, a callback OnDialogResponse possuir um número exorbitante de condicionais já que por ela passa todas as caixas de diálogo do servidor. A proposta, neste caso, é identificar somente a caixa de diálogo relacionada a determinado ID. Alguns sistemas não utilizam a condição IF nesta callback da forma correta, pois esquecem a existencia de ELSE IF e ao invés de encerrar a instrução quando necessário (ou seja, quando identifica o ID da caixa de diálogo), deixam o servidor executar todas as demais verificações (que não são poucas). Observações finais
Espero ter sido claro quanto às informações que eu passei e, caso eu tenha errado em algum pontoou queiram agregar alguma informação, por gentileza me informe. Provavelmente eu me esqueci de algumas coisas. Na verdade com certeza eu esqueci, mas se eu lembrar eu atualizo o tópico. Todos os pontos abordados são FATOS de meu conhecimento, por isso o tópico não é tão extenso. Com base em muito código estudado cheguei a essas conclusões e espero que isso possa iluminar principalmente quem está começando para que adote desde cedo a maioria dessas técnicas e consiga evoluir enquanto programador mesmo que somente por hobby. RE: Organizando e Otimizando - xbruno1000x - 17/06/2022 Ótimo tópico +Rep. Só para agregar: Link de um indentador Pawn -> https://tabuladorpawn.000webhostapp.com/index.html RE: Organizando e Otimizando - Dr Editor - 17/06/2022 (17/06/2022 11:15)xbruno1000x Escreveu: Ótimo tópico +Rep. Obrigado, @xbruno1000x. Estarei o adicionando também no respectivo item. RE: Organizando e Otimizando - CoelhaO_LokaO - 17/06/2022 Gostei da sua organização |