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...

Códigos de versões do Delphi e Diretivas de compilação

Sabe aqueles componentes feitos para múltiplas versões do Delphi que tem várias diretivas para saber qual é a versão do Delphi e assim mudar o código em tempo de compilação?

Segue abaixo uma lista das diretivas de compilação/comnplicação :)

São mais ou menos assim:
{$IFDEF VER210}
//algum código aqui compatível com essa versão
{$ELSE}
//outro código genérico
{$ENDIF}

Seguem abaixo os códigos das versões:


VER80 - Delphi 1
VER90 - Delphi 2
VER100 - Delphi 3
VER120 - Delphi 4
VER130 - Delphi 5
VER140 - Delphi 6
VER150 - Delphi 7
VER160 - Delphi 8
VER170 - Delphi 2005
VER180 - Delphi 2006
VER180 - Delphi 2007
VER185 - Delphi 2007
VER200 - Delphi 2009
VER210 - Delphi 2010
VER220 - Delphi XE

É útil para você criar bibliotecas que compilem tanto em Delphi como em Lazarus, pois você pode usar um {$IFDEF FPC}.

Tente rodar o exemplo abaixo nos Delphis 2010, XE e 7.


procedure TForm1.Button1Click(Sender: TObject);
begin
{$IFDEF VER210}
  ShowMessage('Delphi 2010');
{$ELSE}
  {$IFDEF VER220}
    ShowMessage('Delphi XE');
  {$ELSE}
    ShowMessage('Whatever Version');
  {$ENDIF}
{$ENDIF}
end;

Happy Coding ;)

Comentários

  1. Em que arquivo do Delphi consigo saber qual a versão do mesmo? Em outras palavras, onde consigo descobrir no Delphi a sua versão ?

    ResponderExcluir
  2. Se desejar apenas saber a versão do seu Delphi use o help --> about.

    Se desejar saber a versão do compilador em tempo de compilação eu não sei se tem algum arquivo específico para isso. A melhor saída é montar um arquivo como esse do exemplo, com um monte de ifdefs e usando as versões de ver80 até ver220. Você também pode usar informações obtidas do executável do Delphi. Para ter essas informações em design-time você precisa desenvolver um expert para a IDE ou um componente.

    para obter informações de versão dos arquivos do Delphi: http://delphi.about.com/cs/adptips2001/a/bltip0701_4.htm

    ResponderExcluir
  3. Existe alguma diretiva de compilação para a versão do Windows?

    ResponderExcluir
  4. Tem diretiva para ver se é windows ou linux, agora diretiva para versão do windows eu não conheço.
    Você pode usar a api do windows para saber a versão, veja:
    http://www.planetadelphi.com.br/artigo/50/verificando-a-versao-do-windows

    e

    http://support.microsoft.com/kb/189249/

    ResponderExcluir

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