Peta5 - Nós fazemos TV digital

 

Mantenha-se informado assinando nossa Newsletter.

Nome:

Email:

RSS

 
 
21
Dez
2009
Como documentar suas aplicações Lua para TV digital com LuaDoc
Por: Rafael Carvalho
  

Documentação em projetos de desenvolvimento de software ainda é um assunto que gera alguma polêmica. Na Peta5 assumimos que código é mais importante do que documentação, mas código sem nenhuma documentação pode tornar-se um grande problema. E seguimos duas premissas: código claro e bem documentado. Lembremos que código bem documentado não significa código com muita documentação.

Hoje veremos como comentar o código de nossas aplicações desenvolvidas em Lua, conheceremos uma ferramenta para a criação de documentação a partir dos comentários e aplicaremos o novo conhecimento num exemplo prático.

Para uma aplicação pequena e com poucas linhas de código a utilização de uma ferramenta para gerar documentação pode parecer um pouco de exagero e até de trabalho extra, porém veremos que a ferramenta adotada é bem fácil de utilizar e a documentação gerada agrega bastante ao desenvolvimento e entendimento da aplicação. Em projetos maiores, a utilização de uma ferramenta para gerar documentação torna-se muito importante e praticamente indispensável.

Podemos, basicamente, dividir os comentários em um arquivo de código em três tipos:

  • cabeçalho;
  • descrição de funções ou pontos importantes;
  • linha.

No cabeçalho geralmente são colocadas as informações mais gerais sobre o arquivo e/ou a aplicação, tais como a licença, os autores, contatos etc. As funções são comentadas com uma breve descrição sobre seu objetivo seu(s) retorno(s) e seu(s) parâmetro(s). O comentário de linha pode ser utilizado para esclarecer algum ponto passível de dúvida e é muito utilizado em pontos de decisão e loops.

No exemplo abaixo podemos observar um pedaço de código com os três tipos de comentários:

-- Matematica eh um modulo de exemplo para estudo de documentacao de codigo.
-- Este modulo agrega as quatro operacoes matematicas basicas.
-- Licenca: GPL v2
-- Autor: Rafael
-- Release: 0.4
module('matematica', package.seeall)

-- Realiza a operacao soma.
-- Parametro num1: numero a ser somado.
-- Parametro num2: outro numero a ser somado.
-- Retorno: soma de num 1 e num 2
function soma(num1, num2)
-- verifica se o primeiro parametro eh um numero
if type(num1) ~= "number" then
print("O primeiro parametro nao eh um numero!")
return
-- verifica se o segundo parametro eh um numero
elseif type(num2) ~= "number" then
print("O segundo parametro nao eh um numero!")
return
end
return num1 + num2
end

Este foi um exemplo bem simples que tem como único objetivo demonstrar o uso dos comentários, portanto alguns pontos importantes precisam ser observados:

  • Os comentários foram escritos em português e sem a utilização de acentos. Se a aplicação está sendo desenvolvida por mais de uma pessoa e/ou vai ser disponibilizada, isso pode causar alguns transtornos e mal entendidos. Na Peta5, para mantermos uma padronização, escrevemos todos os comentários em inglês;
  • Utilizamos uma quantidade excessiva de comentários para um código muito simples. Num ambiente de desenvolvimento uma função com complexidade semelhante não precisaria de tantos comentários;
  • Função soma testando inputs desnecessariamente. Se iremos gerar uma documentação da nossa função especificando os inputs, poderíamos passar a responsabilidade de teste para o usuário da função.

Contudo, um exemplo simples funciona bem para mantermos o foco no assunto discutido e não na complexidade ou extensão do código. Por isso, com as devidas considerações, iremos prosseguir com nosso módulo matemática.

Lua tem uma ferramenta para gerar documentação a partir dos comentários feitos no código fonte de uma aplicação. Essa ferramenta chama-se LuaDoc e funciona como um parser que recebe como entrada o código fonte da aplicação com os comentários e retorna como saída-padrão páginas XHTML com a documentação. LuaDoc é Software Livre e pode ser facilmente instalado via LuaRocks:

luarocks install luadoc

Quando o LuaDoc lê um arquivo de código ele procura por uma sequência de três menos (---), esta sequência indica o início de um comentário que deve ser documentado. A documentação termina quando a primeira linha de código, depois do bloco de comentário iniciado por '---', é encontrada. O exemplo abaixo mostra esse uso:

--- Matematica eh um modulo de exemplo para estudo de documentacao de codigo.
-- Este modulo agrega as quatro operacoes matematicas basicas.
-- Licenca: GPL v2
-- Autor: Rafael
-- @release 0.4
module('matematica', package.seeall)

No exemplo acima é possível observar o uso de algumas palavras reservadas que são chamadas de tags, elas são úteis para a organização da documentação que será gerada. As tags são indicadas no código fonte pelo uso do carácter '@' seguido pelo nome da tag, como @release por exemplo. Para uma lista com as tags padrões, consulte o manual. LuaDoc permite a criação de tags personalizadas, assim como a personalização de outras funcionalidades; porém este não é o objetivo deste artigo, se deseja maiores informações sobre personalização do LuaDoc consulte aqui. Abaixo podemos observar a função soma documentada com o uso de tags e sem os testes dos inputs.

--- Realiza a operacao soma.
-- @param num1 Numero a ser somado.
-- @param num2 Outro numero a ser somado.
-- @return soma de num1 com num2.
function soma(num1, num2)
return num1 + num2
end

Para gerarmos a documentação do código fonte de nossa aplicação basta chamarmos o LuaDoc da seguinte forma:

luadoc *.lua

Esta chamada irá gerar um arquivo HTML para cada arquivo Lua e um para cada módulo, caso exista; também será criado um arquivo chamado index.html e outro arquivo chamado luadoc.css. O arquivo index.html agrega toda a documentação dos arquivos e módulos, assim como o arquivo luadoc.css contêm as regras CSS responsáveis pela formatação da das páginas HTML.

Para facilitar o entendimento teremos um exemplo completo. Logo abaixo podemos observar o código fonte do nosso módulo matemática já com todas as funções e comentários:

--- Matematica eh um modulo de exemplo para estudo de documentacao de codigo.
-- Este modulo agrega as quatro operacoes matematicas basicas.
-- Licenca: GPL v2

-- Autor: Rafael
-- @release 0.4
module('matematica', package.seeall)

--- Realiza a operacao de soma.
-- @param num1 Numero a ser somado.
-- @param num2 Outro numero a ser somado.
-- @return soma de num1 com num2.
function soma(num1, num2)
return num1 + num2
end

--- Realiza a operacao de subtracao.
-- @param num1 Numero a ser subtraido.
-- @param num2 Outro numero a ser subtraido.
-- @return subtracao de num1 por num2.
function subtrai(num1, num2)
return num1 - num2
end

--- Realiza a operacao de multiplicacao.
-- @param num1 Numero a ser multiplicado.
-- @param num2 Outro numero a ser multiplicado.
-- @return multiplicacao de num1 por num2.
function multiplica(num1, num2)
return num1 * num2
end

--- Realiza a operacao de divisao.
-- @param num1 Dividendo.
-- @param num2 Divisor.
-- @return quociente.
function divide(num1, num2)
if num2 == 0 then
print("Nao eh possivel dividir por zero")
return
else
return num1 / num2
end
end

Para a criação da documentação deste módulo podemos entrar no diretório onde o arquivo Lua foi salvo e digitar:

luadoc matematica.lua

No mesmo diretório serão criados os arquivos de saída do LuaDoc. Para visualizarmos a documentação completa basta abrirmos o arquivo index.html. Para visualizar a documentação gerada neste exemplo clique aqui.

Como vimos, com o uso do LuaDoc podemos, de forma fácil, gerar a documentação do código de nossas aplicações e com isso agregar mais profissionalismo ao desenvolvimento de aplicações para a TV digital interativa.

Desejo a todos um Feliz Natal e um próspero Ano Novo!

Referências:

blog comments powered by Disqus