6 maneiras de fazer a mesma coisa, o que é considerado boas práticas?

As vezes tem tantas maneiras diferentes de fazer o mesmo código que nós ficamos na dúvida quanto a qual maneira usar. O que seria considerado "boa prática" pela comunidade e o que sua equipe entenderia melhor. Suponhamos que você esteja trabalhando dentro de um método de um Domain Service chamado UmDomainServiceChique(objetoDoDominio) que será chamado por uma API. Você tem uma regra de negócio chique para ser verificada que por enquanto chamarei de VerificaMinhaRegraChiqueComplexa(). Você chama UmDomainServiceChique(objetoDoDominio) e caso VerificaMinhaRegraChiqueComplexa() retorne true você vai querer que UmDomainServiceChique faça o que tem que fazer e a api retornar Ok 200, caso contrário você quer que a API responda um erro qualquer, tipo BadRequest, e retornar uma mensagem dizendo que VerificaMinhaRegraChiqueComplexa deu ruim. Eu vejo 6 maneiras de fazer isso, gostaria de saber a opinião de outrs devs sobre qual seria a maneira menos gambiarr...

O que você melhoraria no Delphi?

Uma coisa que eu tenho dificuldade no Delphi é o seguinte: quando você tem muitas opções, muitas mesmo, você acaba com opção nenhuma. Toda vez que começa um projeto novo você perde um tempinho pra decidir qual vai ser o ambiente, os componentes de acesso, etc, etc ..., mas isso é positivo, já que o Delphi vem com muitas ferramentas.
Uma melhoria importante, na minha opinião, seria o Delphi já vir de fábrica com alguns componentes e bibliotecas para competir com o .Net framework. Por exemplo o Delphi já vem com Indy, mas a Indy não pertence à Embarcadero, a Embarcadero poderia compra-la. A mesma coisa com o Rave e outros componentes que são ultra necesários, que não ficamos sem eles. Do contrário você sempre é obrigado a "escolher" a Indy, "escolher" o Rave, vem junto, mas não é Nativo. Lembra do que aconteceu com os componentes da família nm (nmftp, nmsmtp... etc) do delphi 6 para o 7? Sumiram. O mesmo aconteceu com o quick report. Então você tem que confiar que o Indy e o Rave estarão lá para sempre. Se fossem "nativos" daria maior confiabilidade.

Outra coisa que pode melhorar: a literatura especializada conta muito com o arrastar soltar de componentes, mas não ensina os iniciantes a instanciar classes/componentes via código, sem usar os componentes, a fim de ter um código mais limpo e um form designer mais limpo também. Isso já começa diferente no .Net e no Java, que ensinam os iniciantes a usar classes e não componentes. Parece que tudo no Delphi é voltado a RAD, mas esse não é o único mercado. RAD é muito bom pra projetos rápidos e prototipação.

Uma terceira coisa que eu acho que falta é a existência de um framework de persistência e a existência de mediators para fazer databindings entre coleções e datasources, e entre estes e campos data aware (ou campos normais).
Isso é um recurso interessante do .Net framework: qualquer tipo de vetor, hashlist, collection é um datasource em potencial, e não existe componentes exclusivamente data-aware, mas qualquer componente pode ser bindável por um datasource.

Outra coisa: a biblioteca JEDI tem tudo o que a própria VCL tem, só que melhor, e open-source. Além disso tem outras coisas que nem imaginamos. Seria legal ter uma versão express ou community do Delphi sem nenhum componente além do básico, mas com a possibilidade de instalar componentes de terceiros. Assim você instala a JEDI e está garantido.
Se quiser outros componentes da VCL vc poderia pagar por pacote, sob demanda.

Comentários

  1. Olá Vitor. Como sempre um excelente post. Eu sinto falta também de uma política de certificação. Eu acredito que isso valorizaria bastante nosso mercado.

    ResponderExcluir
  2. Melhoria no delphi? Política de certificação COM ABSOLUTA CERTEZA.

    ResponderExcluir
  3. Então pessoal, obrigado pelo feedback. Vocês tem alguma certificação em outra linguagem/ambiente? Porque eu penso que 60% dos motivos de uma empresa trabalhar com certificação é vender mais o produto, mas 90% dos motivos que levam uma pessoa a tirar a certificação é a esperança de aumento salarial. E isso raramente ocorre, pra falar a verdade. A maioria do que dizem a respeito de certificação é bullshit.
    Certificação é bom? Com certeza. Mas já vi muito certificado fazer cagada, e já vi muito programador sem certificado que é um verdadeiro guru.

    ResponderExcluir
  4. podemos levar nossas sugestões para o pessoal lá no Delphi Meeting ;)

    ResponderExcluir
  5. O que eu sinto falta no Delphi é de componentes mais funcionais, não estou falando de elementos de formulários, como Edits, Memos ComboBoxs isso é elementar, mas de já módulos prontos, tipo telas de cadastros, pesquisas, sobre, janelas principais, e vários elementos básicos que compões qualquer projetos de software e que isso já venha no Delphi e não aqueles insignificantes demos destinados aos iniciantes.
    Gosto muito do CMS JOOMLA feito em PHP, nele você tem centenas de Módulos, plug-ins e componentes todos já prontos é só instalar e configurar.
    Isso aumenta a produtividade, pois os elementos de projetos mais básicos já estão disponível,
    Quem quiser ficar Reinventando a roda, que sejam feliz.
    Aqui todos gostam de programar, mas o cliente quer rapidez nos projetos e o programador rentabilidade o mais rápido possível.
    Outra coisa que estou notando a escassez de livros atuais sobre Delphi, passo nas livrarias da minha cidade e são raros os exemplares e quando encontro ainda é de versões antigas.

    É isso pessoal.

    Gilvan Costa
    http://cstsystem.ithub.com.br/
    www.csthost.com.br

    ResponderExcluir
  6. Então gilvan. Antigamente tinha um tal de business objects, mas era pago e muito bem pago.
    Geralmente boas ferramentas open-source, como o CMS Joomla, são feitas em produtos open-source também, já que ninguém compra o Delphi pra ficar brincando, como hobby. VocÊ compra o Delphi pra trabalhar.
    Dá pra fazer um CMS no Delphi? Dá, tranquilo.

    O .net framework tem coisas prontas como formulario de login etc etc. Mas o Delphi também tem muitas coisas prontas. E você é muito encorajado a reaproveitar seu próprio código.

    O motivo de ser mais fácil achar módulos prontos em outras linguagens do que em Delphi é:
    1) A comunidade Delphi é mais dispersada. O pessoal prefere colocar seus módulos em seus sites pessoais do que colocar em um github ou sourceforge da vida.
    2) O Delphi é mais forte na Europa e Ásia do que nas américas.
    3) a maioria do conteúdo da EDN só é disponível a quem tem uma licença. Além disso o site da comunidade mudou de bdn.xxx..com (borland developer network) pra cdn.xxx.com (codegear) e depois pra edn.xxx.com (embarcadero). Conclusão? Todos os sites, blogs, foruns e revistas que tem um link pra bdn não funciona mais, e você é obrigado a saber como é o formato na edn ou mudar para codegear pra ser redirecionado. mas não tem mais redirecionamento a partir do site da borland. Tente pegar uma matéria antiga do Delphi About que saberá o que estou falando.
    4) Todos os sites bons de Delphi tem um SEO péssimo.
    5) Enquanto a Embarcadero não tiver um pézinho, por menor que seja, no mundo open-source, nem que seja patrocinando um projeto ou grupo, ou com segundas intenções mesmo (google, sun, oracle) a comunidade não vai se fortalecer.
    Mas parece que a Embarcadero não tá a fim de fortalecer a comunidade porque parece que está feliz com o mercado que já tem.

    ResponderExcluir
  7. Olá Vitor, excelente post, com certeza.

    Bem, primeiramente gostaria de falar que estarei no evento em São Paulo e Rio de Janeiro e que gostaria muito de poder contar com a presença de vocês e estarei a disposição da comunidade.

    Eu sou suspeito para falar, já que tenho uma certa paixão e experiência no Delphi. Eu diria que não falta nada nele. Hoje faço praticamente qualquer tipo de aplicativo em Delphi. A única coisa que sinto de verdade a falta é, sem dúvida, uma política de certificação e mais locais de treinamento.

    Eu tive recentemente uma reunião pesada com a MicroFocus Borland e alguns membros de comunidade como o Kelver da ActiveDelphi por exemplo. Fiquei bastante empolgado, pois a Borland Brasil se mostrou bastante interessada em brigar por melhores condições de comercialização, certificação, etc no Brasil. Não sei no que isso vai dar, mas se depender de meu apoio, com certeza sairá algo.

    ResponderExcluir
  8. Interessante. Você usa o Delphi pra fazer suas aplicações pro Iphone também? Ou prefere usar o objective-c?
    Eu acho que falta algum framework de persistência nativo que a Embarcadero diga: "toma, use este aqui".
    De resto não falta nada. Fiquei sabendo que existe uma versão starter edition que custa U$199,00 e pra quem já era usuário da versão turbo sai por U$149,00, mas com a limitação de que seus projetos não ultrapassem os U$ 1000,00.

    ResponderExcluir
  9. Eu ainda acho que o pessoal da Embarcadero está meio perdida no assunto, "Eu também estou!", mas quem sabe eles logo se localizem e foquem o que realmente interessa para todos nós um "Delphi sem Bugs"!

    Abraços

    Marcos Paulo

    E-mail: unitsys@unitsys.biz
    Site: http://www.unitsys.biz/

    ResponderExcluir
  10. Era bom ter um Delphi que montasse automaticamente telas de cadastro, telas filhas, relatórios, login, permissões e menu principal, que fizesse quase tudo em um projeto/aplicação comercial e ainda que você pudesse escrever seu código em eventos na unit da tela e ele compilasse tudo isso e gerasse o executável, na verdade isso existe e se chama AutoProject (feito no Brasil), em versão beta ainda.

    Gilson Adriano
    E-mail: gadriano264@gmail.com

    ResponderExcluir
    Respostas
    1. Então, Gilson, eu estou meio que fugindo um pouco de RAD e programação orientada a eventos. Por mais que ferramentas case como essa gerem um código bem estruturado, elas acabam incentivando o programador na programação orientada a eventos, e os programadores acabam deixando código referente a validação, cálculos e regras de negócio tudo nos eventos da GUI.

      Excluir

Postar um comentário

Postagens mais visitadas deste blog

Botão Add This para adicionar seu post em qualquer rede

Busca de CEP com o Lazarus - Parte 1 - UrlEncode

Uso de memória no SQL Server