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] > <mailto:djpardalrocha%40hotmail.com>>: > > > > 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 <mailto:delphi-br%40yahoogrupos.com.br> > > From: [EMAIL PROTECTED] <mailto:jcmoraisjr%40gmail.com> > > 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] > <mailto:djpardalrocha%40hotmail.com>>: > >> > >> > >> 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 > >