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

Duas maneiras de se fazer split no Delphi XE2 parecido com a função split do C#


Para se fazer uma função split no Delphi basta usar array dinâmico ou list de string.
O exemplo abaixo mostra como.


function split(original: string; separador: string) : TStringArray;
var idx: integer;
tmp, item: string;
resultado: TStringArray;
begin

  idx:=0;
  SetLength(resultado, idx);
  tmp := original;

  while Pos(separador, tmp) > 0 do
  begin

    SetLength(resultado, length(resultado)+1);
    item := Copy(tmp, 1, Pos(separador, tmp)-1);
    tmp := Copy(tmp, Pos(separador, tmp) + length(separador), length(tmp) +  Pos(separador, tmp) - length(separador));
    resultado[idx] := item;
    inc(idx);

  end;
  SetLength(resultado, length(resultado)+1);
  resultado[idx] := tmp;
  Result := resultado;

end;




function split2(original: string; separador: string) : TList < string >;
var
  tmp, item: string;
begin
  result := TList< string >.Create;
  tmp := original;

  while Pos(separador, tmp) > 0 do
  begin
    Result.Add( Copy(tmp, 1, Pos(separador, tmp)-1));
    tmp := Copy(tmp, Pos(separador, tmp) + length(separador), length(tmp) +  Pos(separador, tmp) - length(separador));
  end;

  Result.Add(tmp);

end;

É isso aí, isso é usado em alguns outros posts desse blog.

Comentários

Postagens mais visitadas deste blog

erro "ora-12154: tns: não foi possível resolver o identificador de conexão especificado"

Factory Reset do Samsung Galaxy S

Detectar o encoding de um arquivo para não corromper ao transformá-lo