Postagens

Mostrando postagens de Setembro, 2011

Regras para siglas

Eu tinha o costume de colocar um 's no final de siglas, como CPF ou CNPJ, para indicar plural (ex.: "As ONG's têm feito um trabalho excelente na região Nordeste."). ERRADO!!!
A regra gramatical para plural de siglas, quando a concordância permitir, é simplesmente acrescentar a letra "s", sem o apóstrofo. Ou seja, a frase acima fica "As ONGs têm feito um trabalho excelente na região Nordeste.".
É importante para quem trabalha com exatas não descuidar do conhecimento de lingua portuguesa, pois já dizia Chacrinha: "Quem não se comunica, se trumbica". Comunicação é tudo, e é sempre bom fazer as coisas da maneira correta.
Este link tem mais informações sobre o uso correto de siglas na língua portuguesa: http://www.soportugues.com.br/secoes/abrev/abrev9.php.
[]'s

Membros ThreadStatic e ASP.NET thread switching: cuidados ao usar

Imagem
Tudo começou com uma dúvida referente como a classe TransactionScope mantém referência à um objeto de transação durante todo o seu escopo de atuação, mesmo quando são feitas chamadas à outros métodos sem a passagem explícita desse objeto de transação como um parâmetro desse método, por exemplo.
Olhando o código-fonte do TransactionScope através de ferramentas de disassembler, como o Redgate .NET Reflector ou Telerik JustDecompile (como eu amo esses aplicativos!), percebi que o contexto de transação é armazenado em um membro decorado com o atributo ThreadStatic, ou seja, é praticamente uma "variável global" esclusiva de uma thread, que não pode ser acessada por outra thread.


O problema ocorre quando trabalhamos no ASP.NET. Durante o processamento de uma página em ASP.NET, pode (leia-se: "pode", não que ocorrerá sempre!) uma mudança da thread atual (thread switching). Então, uma página que começa a ser processada pela thread 1 pode terminar com a thread 2! Quem define …

Conversões e desconversões

Mais uma pérola que pode ser relacionada com meu outro post Vícios de linguagem de programação:
return (Int32.Parse(diff.Days.ToString()) < Int32.Parse(configuracao.Parametro.ToString()));
Primeiro detalhe: a variável diff é do tipo TimeSpan, e a sua propriedade Days já é um inteiro. Por que motivo ela é transformada numa string para depois fazer um novo parse para inteiro?
Segundo detalhe: a propriedade Parametro da variável configuracao já é uma string. Não há necessidade de chamar o método ToString().
Tem coisa que dá medo...

"".GetType() vs. typeof(string)

No ASP.NET Webforms é possível incluir um javascript para ser renderizado na tela através do método RegisterStartupScript a partir da propriedade ClientScript do objeto Page. Este método então irá, na hora de "cuspir" o HTML, incluir o script de forma com que ele seja executado assim que a página seja carregada no browser.
Os dois primeiros parâmetros são um Type e uma string, representando um tipo qualquer e uma chave que são usados para identificar exclusivamente um script, de forma a identificar a duplicidade. Para o primeiro parâmetro, podemos passar o próprio tipo da página onde este script será usado. Mais detalhes em http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx.
Bom, no exemplo abaixo, acabou-se usando o tipo como a própria string. Até aí "tudo bem", não vou discutir qual seria o valor correto para passar para este método, mas o que eu fiquei "besta" foi da ocorrência de "".GetType(), de forma a obter uma instância de Type que repr…

Vícios de linguagem de programação

Você conhece as expressões “acabamento final”, “elo de ligação”, “subir para cima”, “metades iguais”, “protagonista principal”, entre outras? É o chamado pleonasmo, uma redundância em uma expressão que pode ser uma figura de linguagem (ou seja, o autor quer enfatizar alguma coisa ou ser irônico) ou um vício de linguagem. Mas se temos um pleonasmo em um código-fonte, dificilmente isso foi feito propositalmente. Vamos ver um exemplo “clássico” disso. Vejam o código abaixo. var lista = new List<string>(); // preenche a lista...ou não bool existencia = lista.Count > 0; if (existencia == true) { // faz alguma coisa... }
Veja o conteúdo do condicional: existencia == true. Mas o tipo da variável existencia já não é um bool? E no final das contas, um resultado do tipo bool não é o que define a expressão que fica no condicional if? Sendo assim, o código poderia ser reescrito simplesmente como: var lista = new List<string>(); // preenche a lista...ou não bool existencia = lista.Count …

Nova graduação!

Imagem
Passados mais de um ano (http://galorebr.blogspot.com/2010/04/primeira-graduacao.html), recebi nova graduação no Krav Magá: faixa laranja! O exame foi no dia 12 de Agosto, mas a cerimônia de entrega da faixa foi neste último final de semana, no Colégio Assunção em São Paulo.Parabéns ao nosso mestre Duda e a todos que se esforçaram para subir mais este nível! Agora é treinar e evoluir o condicionamento físico para o próximo desafio daqui a aproximadamente dois anos.Kidá!