É, cada um pensa de um jeito! Minha intenção era apenas a de ajudar. Acho melhor ficar só nas sugestões de idéias. Cada um tem a sua maneira de codificar. E em respeito a essas diferenças, ficarei apenas na surdina, na obscuridade, observando. Nada mais de códigos. Caso alguém queira a minha opinião, estou por aqui.
Sds. ________________________________ To: delphi-br@yahoogrupos.com.br From: [EMAIL PROTECTED] Date: Thu, 16 Oct 2008 00:09:42 -0200 Subject: Re: [delphi-br] [DICA] +Funções para strings Concordo com o João, não vamos reinventar a roda, kkkkk. Joao Morais escreveu: > > Fala Rubem! > > 2008/10/15 Rubem Nascimento da Rocha <[EMAIL PROTECTED] > >: >> >> Sinceramente, não vejo hack nenhum. Em linguagem C, condições do > tipo "if (var> 0)" >> podem ser simplificadas com "if (var)". O Object Pascal me permite > fazer isso também, >> como ilustro no meu código. Portanto, pra mim, não é hack. > > Hack é tudo que é feito sem o suporte da linguagem. No Object Pascal, > boolean e números não são compatíveis. O que o Object Pascal te > fornece é um meio de hac^H^H^H forçar esta compatibilidade. > > C não tem nem boolean, nem elegância, nem diferença entre código limpo > e hackeado, então a comparação ficou meio forçada. > >> E ainda acrescento que faço uso de intensivo de constantes por ser > uma prática que torna >> bem mais claro o código, algo bem melhor do que ficar usando magic > numbers. > > Hã... Boolean(Items.Count) não me parece mais claro do que > (Items.Count> 0), pelo contrário. A menos que você seja um > programador C ou Assembly. > > No entanto não importa. O que coloquei é o que o prof. Wirth esperava > que fizéssemos, e não colocar a minha opinião, muito menos ir contra a > sua. > >> Quanto ao uso de TStringList,... ora, se em Java eu posso usar coisa > parecida, pq não em >> Delphi? Se o Object Pascal possui artefatos para uso de orientação a > objetos, e classes >> utilitárias para auxiliar nosso trabalho, pq não fazer uso delas? > "Ah, o código é complexo e >> faz uso de heap!" Mas uma função dessas, muito provavelmente, não > seria usada em >> textos muito extensos, e o impacto na performance geral de um grande > sistema aplicativo >> seria o mínimo. > > A pouca demanda para o uso de uma rotina jamais deve ser argumento > para escolher uma opção mais cara perante uma opção mais simples. É > justamente assim que nascem códigos mal feitos. Outros fatores como > manutenção futura também entram na conta, mas que simplesmente não se > aplica para uma rotina tão simples como essa. > >> Alias será, pq faço uso dessas funções intensivamente no sistema que > dou manutenção >> atualmente, e não existe perda de performance com o seu uso. >> >> Agora, putz, se for pra escrever sempre código simpleco e > estruturado, então quem vêm >> do Delphi e tá acostumado a escrever só procedimentos e funções ou > está acostumado >> somente a colocar componentes e codificar razoavelmente eventos vai > se lascar feio ao >> tentar pegar códigos mais trabalhados em Java ou C#. Imagina pegar > algo mais >> complicado como, por exemplo, validar uma texto em uma caixa de > edição (a.k.a. TEdit) >> usando expressões regulares (a.k.a. RegEx)! > > Entendo aonde você quer chegar. Então agora basta, ou escolher um > exemplo a altura da complexidade da implementação, ou implementar a > rotina a altura da sua simplicidade. Mais bonito, menor e melhor são > três grandezas diferentes para trechos de código. > >> Mas, como diria Voltaire, "posso não concordar com o que dizes, mas > até o fim defenderei >> o direito que o tens de dizê-lo." > > Eu não esperava que fosses concordar comigo, no entanto devo confessar > que eu esperava argumentos melhores para as suas escolhas. > >> >> Sds. > > -- > Joao Morais > >> >> ________________________________ >> To: delphi-br@yahoogrupos.com.br >> From: [EMAIL PROTECTED] >> Date: Wed, 15 Oct 2008 22:16:55 -0300 >> Subject: Re: [delphi-br] [DICA] +Funções para strings >> >> 2008/10/15 Rubem Nascimento da Rocha <[EMAIL PROTECTED] > >: >>> >>> >>> if not AllowEmpty then >>> for i := 0 to Count - 1 do >>> while (List[i] = EmptyStr) and Boolean(List.Count) do >> >> No seu lugar eu removeria o while e colocaria um for downto, além de >> tirar esse hack do código e ajudar o caboclo a escrever código limpo. >> >>> { Conta quantas palavras existem em uma string } >>> function CountWords(S: string): integer; >>> begin >>> with TStringList.Create do >> >> Por que não usar o for? TStrings além de usar o heap tem um código >> mais complexo para uma tarefa simples. >> >> -- >> Joao Morais >> >>> try >>> Delimiter := ' '; >>> DelimitedText := S; >>> Result := Count; >>> finally >>> Free >>> end >>> end; >>> >>> >>> Sds., >>> >>> Rubem Rocha >>> Manaus, AM > > _________________________________________________________________ Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger! http://www.amigosdomessenger.com.br/