Boas Práticas Para Programar

MaXwEllDeN

string.reverse("adiV a arohaD")
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 18/10/10Posts: 246Char no Tibia: Elite Pamcadaum

Olá Galera, hoje vou postar um tutorial que ensina você a deixar seu código mais bonito, legível e organizado. Vamos lá.

 

Em primeiro lugar vamos aprender oque é indentação ou identação.

 

 

Identação ou Indentação é básicamente a organização de um código, usando tabulações e organizando os blocos de um código por tabulações diferentes.

 

Exemplo de um código com indentação:

function doPlayerCompleteQuest(uid, quest)

  doPlayerAddItem(uid, quest[1], quest[2])  
  setPlayerStorageValue(uid, quest[3], 1)  
  doTeleportThing(uid, getTownPosition(getPlayerTown(uid)))
  doPlayerSendTextMessage(uid, 27, "Você completou a quest ".. quest[4] ..".")

  if (getPlayerStorageValue(uid, quest[5]) > 0) then
  doPlayerSendTextMessage(uid, 27, "E recebeu um bônus por ter completado outra quest.")  
  end  

  return true
end

 

Este mesmo código, mas agora sem indentação:

 

function doPlayerCompleteQuest(uid,quest)
doPlayerAddItem(uid,quest[1],quest[2])  
setPlayerStorageValue(uid,quest[3],1)  
doTeleportThing(uid,getTownPosition(getPlayerTown(uid)))
doPlayerSendTextMessage(uid,27,"Você completou a quest "..quest[4]..".")
if (getPlayerStorageValue(uid,quest[5])>0) then
doPlayerSendTextMessage(uid,27,"E recebeu um bônus por ter completado outra quest.")  
end		
return true
end

 

Um código com indentação, a primeira vista pode não ser nada de mais. Porém se você fizer um código grande, com muitas funções, condições e declarações, uma boa indentação deixa seu código muito mais fácil de ser lido por outros programadores e até por você mesmo e ser modificado também.

 

Enquanto eu lia um livro sobre C++, encontrei uma lista de algumas boas práticas para programar que eu já conhecia e outras que aprendí. Listarei algumas delas aqui.

 

Escreva seus códigos de uma maneira simples e direta. Isto é, às

vezes chamado de KIS (“mantenha-o simples” - Keep It Simple). Não “force” a

linguagem usando códigos grandes quando poderia ser feito de um modo pequeno.

 

Por exemplo, um código poderia ser feito desse modo:

function addLifeWithInterval(uid, life, interval)

  function add()	  
  if (isCreature(uid)) then
	 doCreatureAddHealth(uid, life)		
  end	  
  end

  add()
  addEvent(add, 2*interval)
  addEvent(add, 3*interval)
  addEvent(add, 4*interval)
  addEvent(add, 5*interval)
  addEvent(add, 6*interval)
  addEvent(add, 7*interval)	  
  addEvent(add, 8*interval)
  addEvent(add, 9*interval)
  addEvent(add, 10*interval)
  addEvent(add, 11*interval)
  addEvent(add, 12*interval)
  addEvent(add, 13*interval)
  addEvent(add, 14*interval)
  addEvent(add, 15*interval)
  addEvent(add, 16*interval)
  addEvent(add, 17*interval)
  addEvent(add, 18*interval)
  addEvent(add, 19*interval)
  return true
end

 

Quando poderia ser feito usando menos linhas, desse outro modo:

 

function addLifeWithInterval(uid, life, interval)

  function add()
  if (isCreature(uid)) then
	 doCreatureAddHealth(uid, life)		
  end
  end

  add()

  for a = 1, 19 do
  addEvent(add, a*interval)
  end

  return true
end

 

 

 

Leia os manuais para a versão de LUA que você está usando. Consulte estes manuais com freqüência, para certificar-se de que esteja ciente da rica relação de recursos que LUA apresenta e de que está usando estes recursos corretamente.

 

Recue o corpo inteiro de cada função um nível de indentação nas marcas de tabulação que definem o corpo da função. Isto faz com que a estrutura funcional de um programa se destaque e ajuda a tornar os programas mais fáceis de ler.

eq9qh0.png

Beeki

Ex-Coordenador XDev
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 12/03/11Posts: 1900Gênero: MasculinoChar no Tibia: Nokte

Opa, gostei muito do seu tutorial amigo, só tenho uma dúvida os créditos são seu ou do autor do Livro? REP+ como incentivo para continuar trazendo conteudos otimos como esse para o XTibia, abraços.

Fabio Augustus - Infraestrutura

Skype: guhsvasc

kpdo

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 27/01/11Posts: 37

muito boa as dicas, algumas eu ja seguia , outras eu ja sabia, porem tinha esquecido.

rep +

Kpdo Server Venha jogar

www.exaioros.com

a2566e6aff49eb85d0b8067c492afaaf.gif

 

 

Pbo pokemon venha jogar

pbo.zapto.org

Gabriel Couto

Anyur
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 22/04/11Posts: 2455Gênero: MasculinoChar no Tibia: Thyn Zare

Aguardando mais para aprovar, aguarde mais repostas no tópico!

REP+

Gabriel Couto, 23 anos. Acadêmico de Medicina.

Ex-Diretor Geral do XTibia.

 

www.tibiatv.com.br

 

 

MaXwEllDeN

string.reverse("adiV a arohaD")
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 18/10/10Posts: 246Char no Tibia: Elite Pamcadaum

@Beeki

Os Irmãos Deitel claro que têm sua parte dos créditos, porém essas dias já eram conhecidas por muitas pessoas, então não creio que eles tenham sido os primeiros a divulgá-las.

eq9qh0.png

Lordfire

TFS Maintainer
avatar
Lenda
Lenda

INFOS

Grupo: LendaRegistrado: 04/10/06Posts: 2605Gênero: MasculinoChar no Tibia: Knight Orion

Sensacional! Super bem formatado e um ótimo conteúdo.

 

Aprovado.

MaXwEllDeN

string.reverse("adiV a arohaD")
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 18/10/10Posts: 246Char no Tibia: Elite Pamcadaum

Por favor alguém coloca meu tutorial na área de scripting novamente, creio que aqui ele não tem muita utilidade, visto que o tutorial visa mais scriptwriting em Lua, algumas coisas podem ser aproveitadas para outras linguagens, mas, ele foi feito especificamente para Lua, movam por favor.

eq9qh0.png