quarta-feira, 25 de março de 2009

Documentar é importante?

Documentar é importante? Existem várias formas de documentação, mas irei falar especificamente de documentação de código fonte.

Existe coisa pior do que precisar entender um código e não ter nenhum tipo de documentação ou simplesmente documentações desatualizadas? Se isso já aconteceu, e tenho certeza que sim, você deve saber o tempo que é gasto para tentar entender um bloco de código, que poderia ser reduzido consideravelmente se corretamente documentado.

Mas por que documentar ou melhor por que os desenvolvedores simplesmente não documentam? Talvez por preguiça ou talvez aparece outra atividade pra fazer e deixar pra documentar depois.

Já ouvi coisas do tipo: “Não temos tempo para isso” ou “Deixei para documentar o código quando terminasse tudo”, isso é o que já ouvi comentarem. OPA! Documentar ou comentar? Existe diferença? Sim e ainda comentar pode ajudar tanto quanto documentar.

Então comentário é uma parte próxima do código que você quer explicar, geralmente para explicar uma ou duas linhas de código. Por exemplo:

// The size of the ArrayList (the number of elements it contains).
private int size;

Documentação já é uma visão mais ampla de um comentário. Um comentário pode ser uma documentação, mas não o contrário, justamente por comentários serem aplicados a uma ou duas linhas de código e documentação compõem um método inteiro, uma lista de funções ou uma classe inteira. Por exemplo:

/**
* Removes all of the elements from this list. The list will
* be empty after this call returns.
*/
public void clear() { }

Mas por que documentar afinal? Além de facilidade para entender o código, manutenção de código, redução considerável de tempo para entender trechos de código, organização e etc. Escrever documentação sempre pensando que alguém irá olhar aquele código futuramente e que irá dar continuidade ao seu trabalho.

Vejam o comentário de um Analista desenvolvedor Notes:

/**
* @Author Rodrigo Freitas – Analista Desenvolvedor Notes
* A documentação de código é importantíssima para o bom entendimento e manutenções futuras de
* qualquer sistema, visto que uma falta de documentação pode gerar mal entendimento de outro ou até
* mesmo do próprio
desenvolvedor, além disso podemos citar também o ganho de tempo quando
*
eliminamos a necessidade de entender tudo o que já está feito antes de darmos manutenção.
*/

Escrevi esse post para incentivar dos desenvolvedores para comentarem e documentarem seus códigos, para que outros desenvolvedores, quem sabe até eu, possam olhar aquele código um dia e ser elogiado pela ótima documentação.

Deveriam fazer com que blocos de códigos não pudessem ser comitados sem antes ser documentados corretamente, assim como em testes, pelo menos dessa forma que deveria ser. Ai entra a participação de uma pessoa mais experiente para analisar e a ajuda de um code view, mas isso é assunto para outro post ;)

Postar um comentário

quarta-feira, 18 de março de 2009

OutOfMemory na cabeça

Tem muita gente resolvendo problema de memória do tomcat, aplicações com arquivos JNLP e servidores de aplicações utilizando os parametros PermSize e Heap Size, sem terem ideia o que são e sem saberem que a má utilização podem causar impactos significativos nas aplicações. Passei por isso essa semana e pensei que deve ter muita gente com essa dúvida, simples de resolver, mas que nem todo mundo tem a curiosidade de procurar se informar sobre pra que elas servem.

Quando ocorre um “java.lang.OutOfMemoryError” a primeira coisa que fazemos é procurar no google os valores para serem adicionados aos parametros iniciais dos servidores de aplicações e etc. Os chamados PermSize e Heap Size, mas eu nunca entendi direito o que esses parametros significam. Então vamos lá.

O que é JVM Heap? A memória Heap é aquela alocada para armazenar os objetos(quando utilizado o operador new) e as classes Java em tempos de execução. Podendo ser especificado através do comando -Xms<initial heap size> -Xmx<maximum heap size> tendo como padrão os valores -Xms32m -Xmx128m.

É geralmente uma boa ideia colocar o parametro máximo para memória Heap de 512. Se colocar uma memória muito pequena a memória do servidor é preenchida rapidamente e eventualmente objeto são criados e poderá não ter mais espaço livre para os objetos. Inversamente se colocar um valor muito alto, muitos “junks objects” ficariam na memória e o Garbage Collection poderia levar muito tempo para tentar desalocar esses objetos, podendo causar um impacto na performace da aplicação.

Essa foi a descrição da memória Heap. Outro tipo de memória é a PermGen chamado “Permanent Generation” é um tipo de memória mais pernamente, fixa e não muda quando a VM está executando. Utilizada para carregar as classes java, definições das classes, valores literais String, retorno do método String.intern() entre outras coisas. Pode ser especificada através do comando -XX:MaxPermSize. O padrão é 64m para as Vms da Sun. Quando essa memória não há espaço para carregar todas as classes, acontece o famoso erro “java.lang.OutOfMemoryError: PermGen space failure” que pode ser resolvido aumentando o valor do parametro -XX:MaxPermSize.

Espero te explicado de forma simples os tipos de memórias PermGen e Heap. Até o próximo post.

Postar um comentário

quarta-feira, 11 de março de 2009

As caras da sua aplicação web


Olá galera, depois de um certo tempo sem postar, estou de voltar com um post sobre uma ferramenta muito interessante e útil para você que quer ver como seu site é apresentado em diversos browsers sem precisar instalá-los. Browsershots é um serviço Open-Source online que simplesmente dá prints de seu site em diferentes browsers, muitos deles desconhecidos, de diferentes sistemas operacionais, como Linux(Dillo, Epiphany), Windows(Avant, Firefox, Internet Explorer), Mac OS(Camino, Safari) e BSD(Flock, Galeon).

Aproveite para testar suas aplicações web em diversos browser e fazer o download das imagens feitas pelo Browsershots. Eu já fiz os download das minhas ;)

Divirtam-se.

Postar um comentário

segunda-feira, 24 de novembro de 2008

Face à Face com a Interface

Semana passada eu analisando alguns códigos de páginas .JSP e .XHTML, reparei que os códigos estavam se tornando muito complicados de manter, principalmente os .JSP, e também cada vez mais incompatíveis com as versões dos browsers(FF2, FF3, IE7 e agora o Chrome). Códigos desorganizados e feitos "de qualquer jeito", então queria tornar o código das minhas páginas mais organizado, limpo e compatíveis com diversos browsers.

Resolvi estudar Tabless/Css para tornar meu código cada vez mais simples de manter e entender. Além das vantagens das suas páginas carregarem mais rapidamente e melhorando a questão de acessibilidade(que acreditem não é nada fácil).

Percebi também que existem poucos desenvolvedores que se importam com a questão de acessibilidade e código simples para suas páginas. Se tornando um diferencial importante de mercado o conhecimento de Tabless/Css.

Durante a minha intensiva pesquisa e estudo durante o final de semana encontrei algumas páginas que merecem destaque tanto por ensinar Tabless/Css com tutoriais, exemplos e links, quanto pelas artes que foram produzidas com a técnica em suas páginas.

Cobre todas referências conhecidas não só Css, mais XML, SOAP, HTML,
JavaScript, DHTML, entre muitos outros.


Possuí vários exemplos de Css aplicados a listas, posicionamento, Tutoriais,
artigos, div´s, posicionamento, entre outros.


Site interessante onde você pode validar seu código Css de acordo com os
padrões do W3C.


Diversos post´s sobre Css, exemplos, testes feitos em outros browsers. Blog em
constante sempre com novidades, atualizado mais de uma vez por semana.


Muito interessante esse site, para quem quer montar seu site de forma simples
com div´s. Simples e direto com relação a navegabilidade.


Site muito interessante com diversos artigos sobre Css, acessibilidade, usabilidade,
HTML, Javascript. Achei interessante esse artigo Introduction to Writing Copy for the Web,
apresentando dicas básicas para escrever na web.


Blog atualizado quase que diariamente, vários artigos sobre Blog, Css, Css
com Javascript. Cheguei a ver até um webcast How to use Css Sprites. Interessante
e diversificado o conteúdo desse blog.

Mais um site com diversos assuntos interessantes não só sobre Css, mas também
sobre Fonts, Tutoriais, How-to entre outras coisas.

Por último e não menos importante seu conteúdo e voltado para webdesigners em geral. Selecionado
não só por causa do seu conteúdo, mas também pela criatividade do desenvolvedor
e o que com Tabless/Css pode fazer.

Bom não vai ser difícil aprender já que sempre gostei de webdesign e usabilidade,
mas ainda tenho muito que aprender.

Postar um comentário