segunda-feira, 6 de novembro de 2017

Programação defensiva com Decorator: simplificando a verificação de nulos.

Olá, pessoal!

Muitas vezes nos deparamos sempre com os mesmos problemas simples e não paramos para pensar em como resolvê-los de forma mais eficiente. Já dei um exemplo assim aqui no blog de como um problema simples pode ter inúmeras soluções diferentes.

Agora, que tal aprender a fazer um:


Apenas instanciando a mesma classe?

Problema


Vamos começar então. Imaginamos que tenhamos uma classe de nome Pessoa e que ela tenha um parâmetro nome:



E agora você deseja que o nome não seja nulo. Usualmente, a dúvida de muitos desenvolvedores é se o if será colocado no construtor, no set ou ainda em alguma classe de serviço responsável por criar pessoas.

Então, não é comum terminarmos com uma solução assim:



Se depois aparecer um objeto Endereco, será a mesma coisa. Se aparecer um objeto Rua, será a mesma coisa. Ainda que apareça um parâmetro novo para Pessoa, como um sobrenome, teremos o mesmo caso. Logo verá que o código ficará bem repetitivo:



Sendo que tudo que queremos, afinal, é garantir que nome, sobrenome e cidade não sejam nulos.

Alternativa


Como alternativa, se não queremos objetos nulos, podemos criar um objeto NotNull, desta maneira:



Esta classe usa generics, permitindo aceitar qualquer tipo de objeto como parâmetro e fazendo a esperada condição de verificar se o objeto é nulo.

Desta maneira, podemos simplificar nossa classe Pessoa, fazendo com que ela receba nome, sobrenome e cidade não nulos, determinando isto já no contrato da classe Pessoa:



E para instanciar uma classe Pessoa, basta:



Podemos também criar outras classes de verificação: NotEmpty, NotNegative (para números), ValidDate (para parse de datas), etc, e podemos combinar várias delas umas com as outras. Por exemplo, você pode querer que nome não seja nulo, não seja vazio e não contenha caracteres especiais, resultando em uma chamada parecida com esta:



Usando assim o poder do Decorator :). Trarei mais exemplos desta natureza em um futuro texto.

Dúvidas ou sugestões, usem os comentários. Obrigado!

quinta-feira, 27 de julho de 2017

Teclado mecânico Alfawise V1 (ABNT 2): recomendo!

Olá, pessoal!

Faz um bom tempo que não escrevo (embora tenha vários rascunhos de textos... rs). E, infelizmente, não falarei de código agora mas sim de uma ferramenta muito boa para produzi-lo: o teclado. Não qualquer teclado, mas um teclado mecânico chamado Alfawise V1.

Este texto aqui é para dar uma ideia da qualidade do teclado e apresentar alguns atalhos dele para alterar a intensidade da iluminação, cores e efeitos (algo que tive dificuldade de encontrar na Internet!).

Enfim, fazia muito tempo que namorava a compra de teclado mecânico, mas a maioria dos modelos disponíveis e mais em conta não eram no padrão ABNT2. Assim, preferi aguardar que uma boa opção de teclado mecânico ABNT2 aparecesse com excelente custo-benefício. Afinal, o Motospeed Inflictor CK104 já estava por aí algum tempo, mostrando que é possível sim existir um teclado mecânico muito bom por um preço justo.

Finalmente, este dia chegou.

A compra


Através do fórum da Adrenaline fiquei sabendo do teclado Alfawise V1 modelo ABNT2. Quando realizei a minha compra, havia poucas pessoas no tópico falando do teclado e poucas reviews no site da GearBest. Mas do pouco que li e vi, estava convencido que valia à pena arriscar e, literalmente, pagar para ver.

Comprei o teclado na GearBest por apenas 135 reais (com taxas e impostos!). O teclado demorou 1 mês e meio para chegar e estou com ele faz poucos dias, mas posso adiantar: adorei o teclado!

Usando


O teclar de um teclado mecânico é bem diferente, pois exige menos força e o "feedback" da tecla é bem melhor durante a digitação. Com o Alfawise não é diferente. Por ele usar o blue switch, confesso que ele é mais barulhento do que eu imaginava, mas já esperava que isto pudesse ocorrer, pois é uma característica do blue switch. Confesso que dá até gosto escrever mais linhas de código com ele, rs.

Como bom teclado mecânico e moderno que ele é, ele inclui iluminação em LED abaixo de cada tecla, que pode assumir diferentes cores e vários efeitos de iluminação. Vou deixar abaixo uma lista de atalhos para alternar entre estas diferentes configurações de cor e iluminação, tudo isto sem precisar instalar qualquer software!

Conclusão


A intenção deste texto não foi fazer uma análise. Foi mais para divulgar este excelente teclado mecânico que, seguramente, foi uma das melhores compras que já fiz.

E vamos aos atalhos!

Atalhos de iluminação do Alfawise V1


  • Fn + INS: alternar entre diferentes modos de iluminação
  • Gn + DEL: alterna entre diferentes cores
  • Fn + PRT (Print Screen): desliga toda a iluminação
  • Fn + 1: Modo de jogo 1 (FPS)
  • Fn + 2: Modo de jogo 2 (CF)
  • Fn + 3: Modo de jogo 3 (COD)
  • Fn + 4: Modo de jogo 4 (LOL)
  • Fn + 5: Modo de jogo 5 (QQ race)
  • Fn + baixo: diminui o brilho
  • Fn + cima: aumenta o brilho
  • Fn + Esc: reinicia as funções do teclado
  • Fn + Win: bloqueia a tecla do windows e deixa ela na cor vermelha.