Conhecer um idioma e se comunicar bem nele são a mesma coisa? Nem sempre, né? Você pode saber vocabulário, gramática, e até gírias, mas se não souber cativar as pessoas, se conectar com elas, talvez acabe não se comunicando tão bem quanto alguém que consegue criar rapport sem nem mesmo falar a língua.
Venho me convencendo que algo parecido acontece com programação. Você pode conhecer linguagens profundamente e ainda assim deixar a desejar nas entregas. Porque codar se trata não só da linguagem técnica, mas da comunicação entre você e a máquina. Para seu código funcionar bem, você precisa se comunicar com a máquina.
E depois que seu código funciona, o que mais ele pode fazer?
Ele pode se comunicar com seres humanos!
Uma vez que o software funcione como precisa, e tenha uma performance legal, dê uma olhada no que ele pode dizer a mais para o próximo ser humano que precisar trabalhar com ele.
Por exemplo, estes tempos me deparei com um código (meu) mais ou menos assim:
O que ficou me chamando a atenção é que este código não explica nada do contexto, né? Ele funciona e performa bem, mas o próximo que vier mexer nele, vai precisar buscar e perguntar um monte de coisa antes de conseguir se situar.
Duas coisas gritavam na minha cabeça:
- Se a preferência do usuário não for "App", o que pode ser?
- Como deixar mais claro que a principal decisão tomada aqui é sobre o número de dígitos?
Bora refatorar e comunicar essas duas coisas aí?
Nesta próxima iteração, trocamos o "if" por um switch. O switch nos permite expôr as outras possibilidades, deixando o código mais claro para as pessoas que precisarem ler. Aproveitamos a abordagem para incluir também a opção extra, que melhora nosso código no sentido de tratar casos estranhos de maneira específica. Fica assim:
Pronto! Agora quem bater o olho nestas linhas de código já vai saber de pelo menos 3 possibilidades de preferências e ter uma noção de que qualquer outra provavelmente é algo inesperado.
Vamos iterar mais uma vez para trazer a decisão dos dígitos a tona? Uma forma de fazer isso é deixar o switch retornando apenas este número. Fica mais claro que esta é a função dele ali:
Maravilha! Agora está bem explícito que a decisão tomada é sobre a quantidade de dígitos!
Epa, mas peraí! Tem algo mais que podemos fazer!
Como esta decisão só precisa ser tomada uma vez, não precisamos armazenar isso numa variável. (Estamos codando em Ruby!) Podemos simplesmente colocar isso num outro método!
Prontinho! Agora nosso código está um pouco mais explicativo para o ser humano. A próxima pessoa que chegar ali, vai ter menos dúvidas sobre o que está acontecendo, provavelmente terá que fazer menos perguntas, buscar menos informações em outro lugar, e conseguirá trabalhar até mais leve! Haha
Cada time tem seu jeito e seu estilo de codar. Talvez este exemplo não seja positivo para todos os contextos, mas fica a sugestão. Qualquer comentário vale a reflexão! O que mais você faria aqui? Ou prefere como estava e nem teria mexido?
Nenhum comentário:
Postar um comentário