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
Olá,
ResponderExcluirmuito boa essa dica, mas será que vc saberia me dizer como usar com forms que passa parametros ?
Grato,
Alessandro.
Você tem 3 opções, sem causar dependência ou acoplamento:
ResponderExcluir1) Transforme o parâmetro em uma propriedade published e use RTTI para preenche-lo se ele existir.
2) Faça com que os formulários com parâmetros herdem de uma form em comum que tenha esse parametro. Daí, em uma unit separada declare na seção interface:
type
MinhaFormComParametroClass = class of TMinhaFormComParametro (ponha no uses dessa unit a unit da sua TMinhaFormComParametro )
substitua NewFormClass: TFormClass; por:
NewFormClass: MinhaFormComParametroClass;
substitua
NewFormClass := TFormClass(FindClass( 'TFrmConsulta' ));
por
NewFormClass := MinhaFormComParametroClass(FindClass( 'TFrmConsulta' ));
A terceira forma é com interfaces, a classe da form tem que implementar uma interface que aceite esse parâmetro através de um setter ou propriedade.
Espero ter ajudado ;)
Este comentário foi removido pelo autor.
ResponderExcluirOlá Vitor, obrigado pela atenção.
ResponderExcluirPor não ser tão experiente assim, gostaria que se possivel ver um exemplo da forma mais simples, pois não manjo nada sobre esses recursos que vc citou acima.
eu aprendi a usar assim nos forms:
constructor Create(AOwner: TComponent; Cliente: String; Valor: Real); overload;
e por ai vai, depende dos parametros que tenho que passar para o form.
Grato pela atenção.
Alessandro.
Você necessita mesmo usar constructor com parâmetros? Não tem como substituir os parâmetros por propriedades, ou atribuir um valor default a eles?
ResponderExcluirSe você não pode usar constructor sem parâmetros é porque provavelmente você abre o seu dataset no evento oncreate do formulário ou até no próprio constructor para ele já abrir mostrando os dados. Não faça isso. Abra os datasets dentro de um método, e só chame o método depois que os parâmetros ou propriedades estiverem setados.
Depois do create você tem que dar um show, certo? Então crie, sete os parâmetros através de propriedades ou métodos (ou já os passe no método que abrirá o dataset) e por último chame o método que abrirá o dataset.
Agora estou meio que no desespero com trabalho e pós graduação, mas assim que tiver um tempo eu posto um artigo mostrando como fazer isso.