Hábitos de Qualidade

21/4/2014 15:53:03 - Fábio Ferreira de Souza

Definições a ser aplicadas

Estarei nomeando simplesmente com a palavra “Ambiente” o local foco da aplicação destas regras.
Este “Ambiente”, pode ser caracterizado por ser uma equipe pequena, que não segue um processo definido, ou qualquer padrão de Qualidade.
Também em nosso “Ambiente” há pouco recursos financeiros, e estes precisam ser logo convertidos de volta, assim o prazo e a produtividade são fundamentais.

O termo “Colega”, será usado para nomear qualquer pessoa que pertence a mesma, instituição, corporação, time de desenvolvimento; aquele que preenche as mesmas funções, que exerce a mesma profissão ou atividade que outras pessoas

Será meramente chamadas de “Rotina” qualquer trecho de código que execute um certo procedimento, podendo ser uma classe ou método/função.

O termo IDE (Integrated Development Enviroment) – “Ambiente de Desenvolvimento de Software”, é um conjunto de ferramentas específicas para cada linguagem.

Conceito de Hábito Triangular

Habito são rotinas que fazemos praticamente de forma automática, quase sem pensar.

A maioria dos nossos hábitos são chamados de “Triangular” pois em geral são rotinas (coisas) que fazemos quando algum gatinho, é acionado para que possamos receber uma recompensa.

Assim como objetivo deste estudo a recompensa principal é a qualidade do software, é a boa reputação pessoal que o programador receberá por fazer um software de qualidade, mas as vezes uma recompensa mais palpável será outros benefícios como maior produtividade, maior facilidade de identificar problemas futuros, e qualquer outra vantagem de ter um código de melhor qualidade.

O gatilho deve ser a lembrança do que é um código ruim, mal feito, preguiçoso, sem segurança, precisamos ter passado como uma lição do que não deve mais ser feito, e isso deve nos levar fazer uma nova “Rotina” pensando em termos melhores recompensas e experiências futuras.

A rotina de cada um vai variar com  o grau de conhecimento e experiência com a linguagem e a IDE envolvida.
Assim também quanto mais conhecermos sobre a linguagem, sobre as metodologias, teorias, e recursos da IDE, melhor será a produtividade

Includes

Em linguagens não compiladas como PHP ou ASP, é comum a inclusão de arquivos dentro de outros, o que aumenta o processamento inicial durante o carregamento total para cada acesso, assim só se deve incluir o que realmente será usado naquela página.

Hábito: inclua só o que for ser usado em cada página

Bibliotecas

Em linguagens compiladas, o uso de muitas bibliotecas eleva pode gerar vários problemas, ainda mais quando mais de uma biblioteca realiza funções similares, ou possuem nomes e chamadas similares.

Quanto maior o tamanho da biblioteca utilizada durante o desenvolvimento do projeto, maior deve ser o conhecimento do programador sobre os componentes desta biblioteca, e também dos colegas que irão manter o código.

Os sistema operacionais e hardware estão sempre evoluindo, e algumas Bibliotecas são descontinuadas, assim ao usar qualquer biblioteca nos tornamos totalmente dependente da continuidade desta, mesmo tendo os fontes é complexo entender tudo.

Atualmente há inúmeras bibliotecas disponíveis para qualquer linguagem, e nem sempre há uma boa documentação capacitando novos colegas ao aprendizado, então procure usar bibliotecas com boa documentação, mantidas por grandes empresas, que assim não vão sumir ou ser descontinuada facilmente.

Hábito: Evite depender de outras bibliotecas se isso não for realmente agregar muito valor, usabilidade ou produtividade.

Comentários também é Documentação

Em um ambiente onde não há muita documentação, qualquer e-mail, rabisco ou anotação é importante, mas com o tempo estas informações se perdem, por outro lado os comentários que podemos colocar dentro de cada código estarão sempre lá, próximo do programador que dará suporte e continuará o projeto.

Todos pensamos antes de escrever o código, imaginamos a logica, então porque já não deixar registrado estes pensamentos, antes de codificar, há dias que estamos mais inspirados, codificamos melhor mas não é qualquer um que entenderia, e comentários explicando a logica vão ajudar, principalmente se no futuro quem for dar manutenção seja outra pessoa.

Algumas IDE até geram arquivos de documentação baseado em comentários estruturados (JavaDoc)

Ter em mãos algumas milhares de linhas de texto feito por algum desconhecido e ter que confiar que isto está certo, ou que parcialmente funciona, e que só precisa de um ajuste, é difícil entender como funciona um sistema quanto toda a documentação não existe mais, e só há os comentários junto ao código.

Hábito: Tenha muitos comentários em seu código

O Mínimo de UML é melhor que nada

Criar arquivos textos junto ao código, ou diagramas de caso de uso, sequencia, ou qualquer arquivo auxiliar UML e manter isso junto ao código é fundamental, não precisamos detalhar tudo como RUP, mas ter princípios do sistema bem diagramados é sempre bom.

Em nosso ambiente, em geral o código fonte vai passando de mão em mão, assim qualquer coisa extra, que não estiver junto aos fontes acaba se perdendo.

Hábito: Faça alguma coisa de UML, e mantenha atualizado.

Programação Orientada a Aspectos

Cada rotina deve se limitar a resolver apenas seu objetivo principal, assim qualquer item secundário deve ser resolvido por outras rotinas.

Pensando assim é fácil criar rotinas com poucas linhas, de fácil entendimento.

Hábito: Mantenha o foco, tenha clareza, não faça tudo em uma única rotina longa de difícil entendimento.

Testes Automatizados

Em nosso ambiente é impossível desenvolver tudo orientado a teste (TDD -Test Driven Development), pois tal técnica é menos produtiva já que envolve projetos em paralelos e modularizados para que ambos projetos usem tais rotinas em comum

Projeto de Teste –>  [ Modulo a ser Testado ] <–  Projeto Final

Mas há partes do sistema que contem rotinas criticas e complexas, e que ainda podem crescer com novas implementações, e que nestes casos vale sim apena, gastar um pouco mais de tempo e criar testes unitários automatizados, que irão poupar futuramente muito tempo para garantir que uma nova funcionalidade não corrompa o funcionamento do que já estava funcionando.

Algumas IDE ou Suítes de Testes contem recurso de “code coverage”, que disponibilizam relatórios que apontam quais rotinas, condições e laços foram usados, pontuando assim o quanto foi a abrangência do teste, se conseguiu alcançar o máximo das funcionalidades especificadas.

Hábito: Rotinas complexas ou evolutivas devem ter sempre testes unitários que comtemplem todos as funcionalidades.

Reputação

Quando abre-se o código de qualquer outro programador há somente duas possíveis impressões: “boa” ou “má”

É muito fácil julgar e condenar um código feito por qualquer outro programador, mas e quando se trata do seu código? qual impressão um outro programador terá ao abrir seu código?

Se tivermos bons hábitos ao programar, nosso código será bom mesmo não havendo processos definidos

Hábito: Seja bem lembrado por todos seus colegas, tenha uma boa reputação de programador.

Ambiente Produtivo

Por menor que seja a empresa, o ambiente de trabalho, os computadores, servidores, e as ferramentas envolvidas, organizar-se para obter o melhor e mais rápido resultado possível é sempre necessário.

Ter 2 monitores permite visualizar a tela de código ao mesmo tempo que se vê a tela do programa final, facilitando a edição do código,  aumentando a produtividade a um baixo custo (techtudo)

Aprender teclas de atalhos, aumenta muito a produtividade geral, pois não é segredo que é muito mais rápido teclar do que pegar o mouse, mover até uma opção e clicar, isso quando não tem que dar vários cliques para fazer uma ação que uma única tecla de atalho já não faz direto.

Mais performance, esperar o computador trabalhar é um grande atraso de vida, além de desmotivar qualquer um, e hoje em dia o custo de um desktop ou notebook com uma boa performance não é tão discrepante de uma máquina básica.

Experimente outras IDE, outras ferramentas, esteja atendo a novas opções que talvez lhe traga uma maior produtividade.

Hábito: Mude sempre seu ambiente externo, e aumente conhecimento sobre tudo que você usa, busque novas opções.

Este é um rascunho de alguns hábitos que usarei em minha monografia