Type Cast... Alguma Contra-indicação?
Bom dia amigos,
Sou um ´desenvolvedor´ auto-didata, que ainda tenho muito a aprender. Trabalho com o BDS 2006 há quase um ano (desde o seu lançamento) e tento usar ao máximo os recursos dessa magnífica ferramenta.
Atualmente, eu AINDA venho trabalhando apenas com WIN32 e tenho usado com muita frequencia o recurso de Type Cast, explorando bastante o SENDER e Cia. o que tem me adiantado demais o trabalho com o reaproveitamento de códigos.
O que gostaria de discutir com vocês é:
Sabe-se de alguma contra-indicação para o type-cast?
O uso excessivo pode causar alguma perda na performance do aplicativo?
Fazer referencia DIRETA a um objeto (e ter que editar o código para cada objeto) no lugar do type cast pode tornar a aplicação mais rápida?
Gostaria de saber a opnião dos colegas nesse assunto
Obrigado pela atenção
Marco Dell Isola
Sou um ´desenvolvedor´ auto-didata, que ainda tenho muito a aprender. Trabalho com o BDS 2006 há quase um ano (desde o seu lançamento) e tento usar ao máximo os recursos dessa magnífica ferramenta.
Atualmente, eu AINDA venho trabalhando apenas com WIN32 e tenho usado com muita frequencia o recurso de Type Cast, explorando bastante o SENDER e Cia. o que tem me adiantado demais o trabalho com o reaproveitamento de códigos.
O que gostaria de discutir com vocês é:
Sabe-se de alguma contra-indicação para o type-cast?
O uso excessivo pode causar alguma perda na performance do aplicativo?
Fazer referencia DIRETA a um objeto (e ter que editar o código para cada objeto) no lugar do type cast pode tornar a aplicação mais rápida?
Gostaria de saber a opnião dos colegas nesse assunto
Obrigado pela atenção
Marco Dell Isola
Brasidata
Curtidas 0
Respostas
Leonardobhbr
29/11/2006
quanto a performance voce perde um pouco pois o delphi tem que descubrir em run-time se o sender por exemplo tem os mesmas propriedades definida.
Só que eu aconselho utilizar pois voce consegue reduzir muito o codigo aproveitand existe dois tipos de tipe Cast
[color=green:06b292530d]
TClasse(Sender).property
ou
(Sender as TClasse).property
[/color:06b292530d]
a diferença entre as duas é que a segunda teoricamente o delphi só ira compilar se ele ver que tem chance de funcinar o codigo, e a primeira não
voce deve ter certeza do que está fazendo pois o delphi só vai analisar em run-time
Só que eu aconselho utilizar pois voce consegue reduzir muito o codigo aproveitand existe dois tipos de tipe Cast
[color=green:06b292530d]
TClasse(Sender).property
ou
(Sender as TClasse).property
[/color:06b292530d]
a diferença entre as duas é que a segunda teoricamente o delphi só ira compilar se ele ver que tem chance de funcinar o codigo, e a primeira não
voce deve ter certeza do que está fazendo pois o delphi só vai analisar em run-time
GOSTEI 0
Marco Salles
29/11/2006
TClasse(Sender).property
ou
(Sender as TClasse).property
a diferrença principal entre os dois tipos de conversão é que na primeira conversão voce deve ter certeza absoluta do tipo de dados que voce ira converter e erros estranhos podem ocorrer , caso voce não passe o tipo de dados correto e a segunda levantara uma exceção do tipo EInvalidCast, impedindo que uma conversão inválida possa ocorrer.
Quanto a performance , voce deve levar em conta que o seu codigo , no processamento propriamente dito tem pouquisimas conversões ,[b:e32c51787f] mesmo que seu programe esteja cheio de conversões[/b:e32c51787f] , na hora do processamento propriamento dito , poucas instruçoes desta natureza , estara sendo processada num mesmo momento... Portanto perda de performance infima..
GOSTEI 0
Brasidata
29/11/2006
[color=green:7799dcbf9c]
TClasse(Sender).property
ou
(Sender as TClasse).property
[/color:7799dcbf9c]
Uso sempre a segunda opção. Confesso que nem conhecia a primeira.
Realmente eu não notei queda de performance nos meus (pequenos) sistemas. De qualquer maneira lancei a discussão no fórum por medo de algum efeito colateral num projeto maior com centenas de instruções como esta rodando no aplicativo.
TClasse(Sender).property
ou
(Sender as TClasse).property
[/color:7799dcbf9c]
Uso sempre a segunda opção. Confesso que nem conhecia a primeira.
Realmente eu não notei queda de performance nos meus (pequenos) sistemas. De qualquer maneira lancei a discussão no fórum por medo de algum efeito colateral num projeto maior com centenas de instruções como esta rodando no aplicativo.
GOSTEI 0
Marco Salles
29/11/2006
lancei a discussão no fórum por medo de algum efeito colateral num projeto maior com centenas de instruções como esta rodando no aplicativo.
mas certamente o seu projeto pode ter centenas dessas intruçoes , mas o codigo que esta sendo executado num determinado momento não tera
GOSTEI 0
Motta
29/11/2006
Não sei bem o motivo de ter tanta necessidade de fazer cast, uma coisa com que se deve tomar cuidade é a sindrome da ´gaveta da cozinha´, aquela gaveta que tem tesoura, durex , faca, troco da padaria, jornal, pano velho , ou seja ,jogar todos os objetos sem classificação, pior que a questão da performance é a questão da clareza ou simplicidade da manutenção.Acho o Cast um ótimo recurso quando bem usado e isto depende de bom senso, fica difícil generalizar um uso correto ou não.
GOSTEI 0
Brasidata
29/11/2006
Não sei bem o motivo de ter tanta necessidade de fazer cast, uma coisa com que se deve tomar cuidade é a sindrome da ´gaveta da cozinha´, aquela gaveta que tem tesoura, durex , faca, troco da padaria, jornal, pano velho , ou seja ,jogar todos os objetos sem classificação, pior que a questão da performance é a questão da clareza ou simplicidade da manutenção.Acho o Cast um ótimo recurso quando bem usado e isto depende de bom senso, fica difícil generalizar um uso correto ou não.
Boa observação!
Mas só para não parecer que uso o recurso para TODA e qualquer situação, na verdade , lanço mão do TypeCast sempre para aqueles trechos de código que se repetirão com muita frequencia dentro de um projeto ou até mesmo para uso em outros projetos sem a necessidade de edição. Não acredito estar comprometendo a clareza ou a manutenção , ao contrário, tenho tido MUITO mais facilidade na compreensão e manipulação do fonte com ele mais enxuto.
Mas não há dúvida que, assim como tudo na vida, o BOM SENSO tem sempre que imperar.
Obrigado por mais essa colaboração
Abraços
GOSTEI 0