segunda-feira, 24 de janeiro de 2011

Padrões de Codificação

Conheci um profissional de criação web incrível, suas páginas são como impactantes obras de arte. É o tipo de pessoa que está só esperando que alguma grande empresa o descubra. Enfim, é “o cara”. Ao elogiá-lo para um colega, fui perguntado se ele era bom criativamente ou tecnicamente. “Ué, mas não é a mesma coisa ?” pergunto eu. “Ele faz ótimos trabalhos e o resultado é perfeito. Mas e a codificação dele faz jus à criação?” pergunta o colega.

Isto me fez refletir: já desenvolvi muitos programas que estão em atividade em empresas, mas meu código pode ser realmente uma porcaria. Programo há 21 anos e nunca li sobre padronizações. Por consequência, meu estilo de programação muda a cada semana e nem eu o entendo após algum tempo - imagine outros programadores. Alguns chegam a dizer que o código é criptografado.

O objetivo é alcançado, mas não seria também objetivo dar manutenção posterior ? A falta de ferramentas adequadas (no caso estilo de programação) não poderia estar limitando a criatividade ?

Dito isto, resolvi correr atrás de padronizações de código-fonte e achei os documentos a seguir que espero que sejam úteis para quem quiser criar código para o mundo e não para si só:

OWASP - guia de programação segura: http://www.owasp.org/images/e/e2/OWASP_SCP_Quick_Reference_PT-BR_v1.0.pdf

material sobre padronização de programação PHP:
http://www.dagbladet.no/development/phpcodingstandard/ (Inglês, para mim, o melhor) 
http://www.walkeralencar.com/PHPCodeStandards.pdf (pt-BR, um resumo traduzido do guia da Zend) 
http://framework.zend.com/manual/en/coding-standard.coding-style.html (Inglês, guia da Zend - "fabricante" do PHP)  

artigos sobre padronização: 
http://blog.walkeralencar.com/archives/25 http://www.arnaut.eti.br/op/cppfl25.htm

padronização Java (Oracle). Para programadores de outras linguagens, serve para encontrar pontos em comum com outras comunidades: http://www.oracle.com/technetwork/java/codeconventions-141999.html#680


UPDATE 17/02/2011:
Não sabia que a Google também tem seu próprio guia de estilos:
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml

Divulgando conhecimento

Existem 2 formas de passar conhecimento - criando conteúdo original ou ecoando conteúdo de terceiros. Existe uma piada comum entre estudantes universitários que diz que “copiar de alguém é plágio, copiar de vários é pesquisa”. A menos que seja uma cópia tal e qual, com as mesmas palavras, eu discordo.

Reproduzir conteúdo de terceiros, é muitas vezes considerado plágio, principalmente se o conteúdo é pago. Porém o conteúdo original nem sempre é explicado de forma que todos consigam interpretar - sempre existe alguém que não entende patavinas do que foi dito. Isto quando o conteúdo não peca pela falta de divulgação. 

Ao reescrevermos o conteúdo original, podemos alcançar um número maior de pessoas tanto por usarmos outras formas de expressão - formas muitas vezes mais lúdicas (com outras palavras, vídeos, etc), mas também por divulgar mais o conteúdo. Aí entra o efeito “Twitter” onde a importância da notícia não é medida pelo seu conteúdo, mas sim pela quantidade de repetições feitas pelas pessoas.

A idéia de criar conteúdo original parece nobre, afinal não é plágio. Mas criatividade não é pegar 2 coisas comuns na nossa vida, mas diferentes entre si e mostrá-las juntas, de uma forma que ninguém viu (citação plágio do Stephen King) ? Não seria a originalidade nada mais do que uma criação coletiva que tudo aquilo recebemos (de Michelangelo à TV) e que regurgitamos à nossa maneira (citação plágio de César Brod) ?

Não importa como, mas me parece que a divulgação de conhecimento sempre se justifica.