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

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

Desde que lancei o meu curso de introdução à programação tenho estudado, pensado 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 fui analisar os comentários, pois este é o local onde é mais provável encontrar certas, digamos assim, expressões incomuns. Como na na internet the zuera neves ends resolvi expor estas expressões dos programadores e mostrar que eles também são seres humanos como cada um de nós.

É 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 os textos mais curiosos que encontrei.

Agora que estamos condenados

Figura2_EstamosCondenadosFonte: Arquivo \mscorlib\system\threading\Tasks\ConcurrentExclusiveSchedulerPair.CS linha 243

Fuja dos produtores zumbificados

Figura3_ZumbiArquivo \System.Core\System\Linq\Parallel\Scheduling\Scheduling.CS linha 52

Desvie da bola!

Figura4_BolaFonte: Arquivo \System.Xml\System\Xml\BinaryXml\XmlBinaryReader.cs linha 626

Ah, aquele legado feio!

Figura5_LegadoFonte: Arquivo \mscorlib\system\reflection\emit\ismwrappercore.cs linha 27

Eu não consigo provar…

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

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

Figura7_MelhorJeitoFonte: 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_DeixarFonte: 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_ManutencaoFonte: Arquivo \mscorlib\system\threading\Tasks\Parallel.cs linha 3421



Esta entrada foi publicada em Programação e marcada com a tag , , , , , , , , , . Adicione o link permanente aos seus favoritos.

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

  1. Mario Vernari disse:

    Mauro!
    What about this pearl at the very end of the System.Windows.Controls.Grid.cs source?
    //——————————————————
    //
    // Extended debugging for grid
    //
    //——————————————————

    #if GRIDPARANOIA
    private static double _performanceFrequency;

  2. Carlos Prado disse:

    Olá, estou meio por fora do mundo .Net e gostaria de saber se após esta liberação do código há algum projeto de portar para o Linux ou outros Unices. Sei que há o projeto mono, talvez ele possa crescer bastante agora com a abertura do .Net – sabendo quando aproveitar estas pérolas aí.

  3. Rafael disse:

    Apesar de não ser recomendado, é muito comum comentários em “primeira pessoa” como se fosse o código falando, alguns em linguagem coloquial e outros em termos técnicos.

    No caso de “We’re doomed” por exemplo, ele se refere a execução de uma classe Task que após um erro estará realmente condenada (a Task estará condenada e não o desenvolvedor!!!).

  4. Alisson disse:

    Isso mostra o quão normais os caras são.

    E isso é muito bom 🙂

  5. Gabriel disse:

    kkk belo artigo.

    Parabéns.

    Agora entendo os paus que dá no visual studio, que só fechando e reabrindo pra resolver…

  6. Marlon Bernardes disse:

    O #2 não parece ser pérola… O termo “zumbi” normalmente indica Threads que já terminaram a execução mas ainda possuem referencias no OS.

  7. Natan disse:

    @Carlos Prado,

    O código do .NET já está disponível a vários meses na internet. O que ocorreu agora foi a liberação desse código no github com uma licença OSI compliant. A Microsoft também anunciou o .NET Core com distribuição oficial para linux e mac.

    http://blogs.msdn.com/b/dotnet/archive/2014/11/12/net-core-is-open-source.aspx

    Também anunciou uma nova versão do VS gratuito para qualquer uso, inclusive comercial (até 5 usuarios) numa versão equivalente ao “Professional”.

    http://blogs.msdn.com/b/visualstudio/archive/2014/11/12/visual-studio-2015-preview-visual-studio-community-2013-visual-studio-2013-update-4-and-more.aspx

    Isso tudo foi anunciado no Connect, e foi filmado e está disponível online:
    http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014

    Na conferência, entre outras coisas, os fundadores da Xamarin e criadores do Mono Miguel de Icaza e Nat Friedman aparecem e falam sobre essa integração. Tem legenda até em português, não tem desculpa pra não se atualizar sobre o assunto. =)

  8. Elvio disse:

    O Marlon parece estar correto, repare que o trecho de código está dentro da seção de paralelismo do LINQ. O comentário parece estar se referindo ao tempo de timeout que uma thread poderá ser considerada “zumbi”.

    http://en.wikipedia.org/wiki/Zombie_process

  9. Luiz Gustavo disse:

    Tô vendo ae um monte de gente que talvez nunca tenha trabalhado com .NET falando: “Ah … tinha que ser .NET”, “Por isso que não curto .NET”, “.NET é isso e bla bla bla”.

  10. MARCELO V CORREA disse:

    talvez liberaram o codigo do pela pouca adesao de programadores ao.NET ..eu acho que para o chegar proximo do JAVA ainda tem muito caminho e confiança a percorrer…uma boa iniciativa da MS$ para que ela continue no mercado ..

  11. kkkkkkk Agora entendo porque a Microsoft demorou e muito para deixar open-source o .NET…..

  12. Meme disse:

    I see nothing fun/interesting in these comments. What I worry about (as a programmer) is a quality of architecture. It’s not a secret that introducing “dynamic”s in .NET required a lot of rewriting. Means .NET from very start WAS NOT properly architected. Even now if you dream to create language with multiple return values there is NO WAY to do it even on MSIL level! Reason is simple: you cannot return more than one value from function’s stack. Viola! Welcome to 21-th century…

  13. Ramon disse:

    O ‘desvie da bola’ seria uma referencia a baseball, “rebater” em caso do sistema mandar uma Curveball (tipo de lançamento).
    Muito bom o texto!

  14. Marcos disse:

    Quanta bobagem dos JavaBoys nos comentários… A Sun tinha Vergonha de liberar o código do Java!

  15. Natan disse:

    @meme
    > Even now if you dream to create language with multiple return values there is NO WAY to do it even on MSIL level!

    You have no idea what you are talking about. It is ridiculously simple to return multiple values from any language. The reason is that this is all syntatic sugar. A return value at assembly level is just an address to “something”, and it is up to the code running to interpret that anyway it wants. Even PHP and other dynamic languages that support multiple return values does that by hiding an object or array with those values. You cannot see that in the language, but they surely exist.

  16. Pra rir um pouquinho. Qual programador nunca fez isso?

  17. Pingback: Os 10 links mais comentados em Novembro | Blog da Concrete

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *