Fujiy

Blog sobre .NET, C#, ASP.NET entre outras tecnologias de desenvolvimento de software

Desenvolva como se o próximo a manter seu código seja um maníaco homicida que sabe onde você mora.

22/08/2014 22:02:47 Por Fujiy

Normalmente quando estou programando não estou pensando em fazer funcionar apenas, na verdade o desafio é fazer de forma simples e óbvia. O fazer funcionar é o mínimo, se não funciona não adianta criar.

As vezes, ou muitas vezes, o dificil é fazer o simples, pode ser porquê não conhecemos a forma certa ou como usar determinado Framework, por estar "dentro" do problema e já influenciado pelo código existente ou mesmo pelo entusiamo de criar códigos mirabolantes.

"Code as if the next guy to maintain your code is a homicidal maniac who knows where you live." -Kathy Sierra and Bert Bates

Criando código bem estruturado, vai poupar seus colegas de muitos problemas (bugs) e economizar tempo sempre que precisar mexer no seu código. Costumo dizer que a próxima pessoa a mexer no código pode ser eu mesmo daqui 6 meses, quando já não lembro muita coisa do projeto, e ter o código limpo acaba sendo uma recompensa.

Para ter código limpo você depende de muitas coisas, mas é muito mais fácil faze-las quando está escrevendo pela primeira vez do que no futuro ter que entender o motivo de tudo que foi feito do jeito que está. Algumas coisas como:

  • Usar uma variavel entre alguns calculos, com um nome descritivo
  • Separar o código em método que façam sentido, normalmente com altura menor que sua tela.
  • Agrupar chamadas em blocos onde o código esteja relacionado de alguma forma e deixando uma linha em branco antes do próximo. Meio que para separar os pensamentos
  • Manter os métodos em ordem de chamadas, por exemplo se tenho um método que chama outros dois método na mesma classe, mantenho eles perto, o chamador primeiro, depois os chamados.
  • Não duplicar código.
  • Não depender de efeitos colaterais, ou regras "fracas".
  • Entre muitos outros. Recomendo o livro Clean Code: A Handbook of Agile Software Craftsmanship

 Outro fato que muita gente ignora é a compilação e deploy. Uma das coisas que dão mais trabalho e medo, é pegar um código muito antigo que muitas vezes nem compila e ter que só alterar uma linha de código. Como garantir que a versão do código que tenho é a que foi pra produção a dois anos atras? E se esse código está com alterarações que nunca subiram pra produção?

E o mais importante, refatorar, refatorar e refatorar. Antes e depois de mexer em algum código, veja as opotunidades de refatorar.

Quando pegar um código muito bagunçado, faça uma limpeza, remova duplicidades, garanta que tudo ainda funciona e então faça suas alterações. E ao terminar garanta que as alterações estão organizadas, entre um teste e outro acabamos deixando coisas para trás.

 A biblioteca que uso pra cache, Fujiy Util, é um bom exemplo de refatoração, apesar de ser pequena, a principio era um só método que fazia tudo, agora tenho classes separadas pra gerar chaves a partir de uma chamada de método e a classe que gerencia o Cache em si.

Fujiy Util 1.1.0

22/08/2014 21:56:24 Por Fujiy

Publiquei uma nova versão do Fujiy Util.

Um detalhe que eu não tinha percebido até alguns dias, o que acontece com código assíncrono já que inicialmente ele não dispara uma Exception?

O problema não é especifico na biblioteca, mas em qualquer código que você use algum tipo de Cache onde faça o cache de uma Task, o que vai ser cada vez mais comum, ainda mais considerando que as chamadas que normalmente usam cache, são assíncronas.

O que acontece é que ao chamas o método a ser cacheado, ele retorna com sucesso uma Task, em Status pendente. Posteriormente ela será "awaited" e possivelmente ser cancelada ou falhar, mas nesse momentoa Task já estava no cache. Então agora antes de retornar qualquer item do tipo Task, verifico se não está com o Status Faulted ou Canceled.

https://www.nuget.org/packages/Fujiy.Util/

MCSD: Web Applications

03/06/2014 22:41:40 Por Fujiy

Como resultado dos últimos exames recebi a certificação MCSD: Web Applications:

MCSD: Web Applications - 70-487

03/06/2014 22:16:35 Por Fujiy

Dia 28 fiz o último exame para a certificação MCSD: Web Applications, fazendo 940 pontos, o que foi uma boa surpresa, pois novamente não tive tempo pra estudar, já que eu tinha fazer a prova ate o final de maio, e só o dia 28 estava disponível.

Este exame também tem um livro pra ajudar nos estudos: https://www.microsoftpressstore.com/store/exam-ref-70-487-developing-windows-azure-and-web-services-9780735677241

 

MCSD: Web Applications - 70-486

17/05/2014 16:39:00 Por Fujiy

Fiz a prova 70-486, sobre aplicações Web, mais especificamente ASP.NET MVC e Azure. Passei, mas a prova foi mais difícil que anterior, com algumas perguntas que acredito até estarem com erros, por exemplo uma das respostas que parecia ser a correta, declarava uma variável duas vezes e não declarava outra, o que parece um erro de edição.

Este exame foi atualizada dia 30 de abril, pra ter perguntas sobre ASP.NET MVC 5 e algumas novidades do VS2013, Azure e SignalR.

A Microsoft Press tem um livro para treinamento deste exame: https://www.microsoftpressstore.com/store/exam-ref-70-486-developing-asp.net-mvc-4-web-applications-9780735677227