.NET

16 nov, 2015

Pérolas no código fonte do .NET Framework

Publicidade

Recentemente, a Microsoft liberou o código fonte do .NET Framework. Neste artigo vou mostrar algumas pérolas e preciosidades que encontrei nos arquivos com código fonte após uma análise simples.

Desde que lancei o meu curso de Introdução à Programação, tenho estudado e escrito muito sobre vários aspectos relacionados à programação, design e codificação. Quando vi a notícia que a Microsoft liberou o código fonte do .NET Framework logo tive a ideia de fazer uma pequena análise e ver o que podia descobrir de interessante.

Neste artigo, eu mostro uma análise simples de todos os arquivos .CS (de C#) encontrados no GitHub do .NET Reference Source. Logo no começo pude notar que foi difícil encontrar palavras de baixo calão, palavrões e outros xingamentos, o pode significar que: a) alguém fez um serviço de limpeza antes de liberar o código fonte; ou b) os desenvolvedores realmente não quiseram se expressar desta maneira.

Contudo, ainda assim descobri algumas pérolas e curiosidades quando foi analisar os comentários, pois este é o local onde é mais provável encontrar certas, digamos assim, expressões incomuns (sem contar que, como vocês devem saber, na internet the zuera neves ends). É importante destacar que mesmo com estas pérolas, pouco se pode afirmar sobre a qualidade ou outros atributos tanto do código fonte, como do .NET Framework em si. Bem, vamos aos textos mais curiosos que encontrei.

Agora que estamos condenados

Figura2_EstamosCondenados

Arquivo \mscorlib\system\threading\Tasks\ConcurrentExclusiveSchedulerPair.CS – linha 243

Fuja dos produtores zumbificados

Figura3_Zumbi

Arquivo \System.Core\System\Linq\Parallel\Scheduling\Scheduling.CS – linha 52

Desvie da bola!

Figura4_Bola

Arquivo \System.Xml\System\Xml\BinaryXml\XmlBinaryReader.cs – linha 626

Ah, aquele legado feio!

Figura5_Legado

Arquivo \mscorlib\system\reflection\emit\ismwrappercore.cs – linha 27

Eu não consigo provar…

Figura5_Legado Figura6_Provar

Arquivo \System\services\monitoring\system\diagnostics\EventLogInternal.cs – linhas 904 e 1097

Não acho que é o melhor jeito, mas vou deixar assim mesmo

Figura6_Provar Figura7_MelhorJeito

Arquivo \mscorlib\system\globalization\compareinfo.cs – linha 361

Não entendo essa mudança, mas vou manter a lógica do jeito que está

Figura8_Deixar

Arquivo mscorlib\system\reflection\emit\methodbuilder.cs – linha 736

E para finalizar, o melhor de todos:

Eu não vou tentar dar manutenção nisso

Figura9_Manutencao

Arquivo \mscorlib\system\threading\Tasks\Parallel.cs – linha 3421