sexta-feira, 30 de agosto de 2013

Mão na massa! Como retornar coleções em métodos?

Depois dos primeiros textos sobre qualidade, que focavam mais no aspecto comportamental com relação ao novato, equipe, chefe, cliente e empresa, vamos agora começar a falar de código!

Como estamos começando o assunto no blog, de início não vou partir para nada mais avançado em termos de qualidade de código, como design patterns. Vou começar a demonstrar pequenas práticas, com foco na linguagem Java, que podem ser facilmente incorporadas no código produzido diariamente pelo desenvolvedor. Em princípio, acredito que serão muito úteis para os desenvolvedores novatos.

Um bom programador deve dominar o conhecimento de práticas simples na construção de código. Livros como Code Complete, Clean Code e Effective Java exploram muito bem estas práticas, só que este conteúdo parece não alcançar grande parte dos desenvolvedores, pois observo que pouco se fala e se exercita qualidade de código no Brasil, ainda mais quando falamos da parte de testes. Obviamente, teste é primordial para conquista de qualidade, mas ele sozinho está longe de resolver seu problema de qualidade. Como diria Steve McConnell, no livro Code Complete:

[...] trying to improve software quality by increasing the amount of testing is like trying to lose weight by weighing yourself more often.

Sendo assim, vamos para uma pequena e simples prática:

  • Ao invés de retornar null para métodos que retornam uma coleção (um List, por exemplo), retornar uma coleção vazia;

Vamos a um exemplo. Imagine que você tem o seguinte método:

public List<String> consultarListaDeAlgumaCoisa() {
       //metodo fazendo alguma logica para retornar alguma coisa
       return null;
}

Evite fazer isto! Se ocorre algo na lógica do seu código onde a lista poderá vir sem elementos, retorne uma lista vazia ao invés de null:


public List<String> consultarListaDeAlgumaCoisa() {
       //metodo fazendo alguma logica para retornar alguma coisa
       return Collections.emptyList();
}

Assim, quando alguém chamar este método, não precisará verificar se a lista está nula ou não. Isto significará menos código a ser escrito, lido e chances menores de NullPointerException na aplicação.

É claro, existem raras ocasiões que o retorno de uma lista nula pode significar algo na lógica da aplicação, diferente de uma coleção vazia. Mas temos que admitir que este tipo de situação é exceção, e não regra.

sábado, 24 de agosto de 2013

A empresa e a qualidade de código - Parte Final

Enfim, usei todo este discurso para chegar ao ponto que gostaria. Um software de qualidade vai além do código-fonte, pois envolve também a satisfação do cliente. E se a empresa busca qualidade em seus softwares, ela vai ter que flexibilizar o processo de desenvolvimento de alguma forma e seus empregados precisam estar dispostos e preparados para isto.

Este tipo de movimento começa desde a fase de proposta do projeto pela equipe comercial da empresa. Os clientes em potencial também precisam entender como é o processo de desenvolvimento de software. Alguns deles, infelizmente, entendem que software é um produto simples que você pergunta quanto é, paga e ele atenderá as suas necessidades ao final. Mas a realidade não é esta. O cliente precisa estar envolvido do começo ao fim do desenvolvimento. Só assim ele terá um produto, na visão dele, com qualidade: regras de negócio contempladas, sem bugs preocupantes, com os ajustes que ele gostaria e com a aprovação do usuário final do produto.

E a empresa pode fazer algo com relação a qualidade do código em si? Claro! Se sua empresa incentiva a busca pela qualidade, já temos meio caminho andado, pois este incentivo abrirá portas para que a equipe faça refatorações no código, use de pair programming e code review, dedique tempo para testes e integração contínua, dentre outras ações voltadas a qualidade que poderiam ser barradas em algumas empresas por pura ignorância.

A empresa pode ir um pouco além e capacitar as pessoas, incentivando membros mais experientes a realizarem palestras e workshops sobre qualidade de software, envolvendo assuntos que iremos tratar aqui no blog.

Bem, chega ao fim esta "série" sobre qualidade. Meu intuito foi demonstrar o envolvimento na qualidade do software pelos diferentes papéis na empresa. Como podem ter notado, gosto de conversar sobre assuntos comportamentais e organizacionais, então creio que vamos ver com alguma frequência este tipo de texto por aqui, mas o foco daqui em diante será código e mais código!