Código Limpo é uma Responsabilidade — Blocos

Guilherme Diego
Dec 28, 2015 · 4 min read

Fala galera, beleza? Bom hoje eu estou aqui para dar continuidade a essa magnifica série (aooooooooooooooooo). Se você não leu o último post da série, saiba que o Killgrave mandou você ler ele aqui!

Image for post
Image for post

Recentemente fiz algumas provas e uma delas envolvia um ‘Pythoniano’ que me fez lembrar de algo que costumo fazer nos meus códigos e que é uma prática de clean code, e por isso hoje falaremos de (rufem os tambores)…. ta… você já entendeu… ta no titulo hahaha!

Bolacha VS Biscoito da programação!

Se tem uma discussão que é a famosa Bolacha vs Biscoito da programação, essa discussão é como iniciamos um if ou qualquer outro bloco. Como a discussão literal entre bolacha e biscoito, ambos os jeitos são corretos, porem, eu vou dar a MINHA opinião sobre o assunto.

Eu prefiro o famoso if (cond) { é tão magico que até cabe numa linha hahaha. Eu não gosto de iniciar o bloco na linha de baixo, acho que tira um pouco da beleza do código, você lê uma condição e ai na outra linha, PUFF, só um { perdido na zoeira. Mas na sinceridade se você puder não usar o { não use! Falaremos disso logo mais!

Return, Single Operation If e Ternários

Algo que bati muita cabeça no teclado foi o fato do uso de if/else quando dentro deles existia um return. Em algumas IDE’s até é alertado pra ti que existe algum cara no seu código que possivelmente precisaria de um return.

Pois bem, o fato é que nem sempre precisamos declarar um else por que no fim das contas se o return do if de cima não “sair” o próximo sai!

Isso nos leva a um segundo ponto interessante! Single Operation If, ou seja um if que tem apenas uma função a ser executada! Para quem faltou das primeiras aulas de qualquer linguagem na faculdade ou simplesmente é um iniciante em linguagens que exitem os {} quando o if tem apenas UMA função não é necessário abrir as chaves, isso dado a lógica que as chaves representam um BLOCO de código, e se o seu if tem que executar apenas uma função, você pode passar ela direto! (ooooh shit fucking obviously). O que nos leva a:

Não satisfeito com isso, ainda exite casos particulares que podemos usar de um recurso chamado “If Ternário”. Operadores ternários servem para atribuições a partir de uma condição, exemplo, variável x vai receber valor de y se y existir senão vai receber o valor de 0. Ou no nosso caso, retorne “existe um bool” caso bool seja true ou retorne “não existe bool” se o bool for false.

Blocos de Código

Se você notar, até agora falamos basicamente de if/else, o motivo disso é que blocos de código normalmente são gerados por eles! Futuramente vamos falar sobre “Código Elegante e os 3 níveis de endentação”, mesmo que ache isso meio marmelada e talz… Porem algo que esta confirmado é que muitos blocos de código atrapalham a leitura do mesmo! Vamos a um exemplo prático que apliquei em uma prova recentemente!

Perceba que temos uma função e logo em seguida temos a abertura de um bloco. Esse bloco confere se o node realmente existe para que possamos realizar as funções logo abaixo! Porem pense assim, se não existir node eu posso matar a função ali, não preciso finalizar a execução. No javascript como em outras linguagens temos o poderoso (zoado, mas poderoso), return;

O return sem argumento vai devolver um null, mas o importante é que ele vai parar a execução, logo, não precisaríamos do bloco, e poderíamos fazer uma verificação simples pra ver se o código iria prosseguir ou não. Seguindo isso e as regras de Single Operation If teríamos algo assim:

Exemplo

Ok querido leitor! Seu pedido é uma ordem! Vamos complicar as coisas, que tal angular? Vamos construir um controller simples de login. Teremos um $scope.user que terá email/password, teremos no scope um evento de submit também. Esse que vai verificar sem ambos estão preenchidos, e se o e-mail realmente é um e-mail valido! Usando um pouco de John Papa, e imaginado que estamos usando pelo menos alguns task runners o código “base” ficaria assim :

Pra ser sincero, não sei nem se isso vai funcionar uahuahauhauh Porem vamos fazer um Shazan nisso ai, e deixar ele legivel usando o que aprendemos até então:

Conclusão

A conclusão é simples : Blocos de Código em excesso, como callbacks, atrapalham na leitura do código. As vezes apenas praticas simples durante sua programação podem garantir um código mais elegante e sucinto.

E é isso ae garotada linda do meu coração, se o Domingão é do Faustão, a segundona é nossa! (forcei a barra mesmo e se reclamar forço mais!). Criticas, sugestões, dicas ou meu endereço pra me mandar bacon/chocolate ou a Scarlett Johansson, vocês podem me achar no Twitter, Linkedin e GitHub

Abraços!

Guilherme Diego

Written by

Software Enginner, Food/Tecnology ❤, I code during the day, fighting the bad guys during the night. Remeber, you’ll never see me in the same place as Batman

Guilherme Diego

Written by

Software Enginner, Food/Tecnology ❤, I code during the day, fighting the bad guys during the night. Remeber, you’ll never see me in the same place as Batman

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store