1

次のことを考慮してください

constructor TSettlement.Assign( const OldInst : TSettlement; const ResetFsToo: Boolean );
begin
  //inherited
  Create;
  if OldInst = nil then
    exit;

  Self.Acceptancedate := OldInst.Acceptancedate;
  // etc etc
end;

また、コード内の他の場所でこれらの呼び出しも検討してください

SettInst.Assign(DisplaySett, False);

DisplaySett := TSettlement.Assign(nil, False);

NewInst := TSettlement.Assign( Displaysett, False );

そして(おそらく最悪)

  if OldList.Count > 0 then
    for loop := 0 to OldList.Count -1 do  
      Self.Add(TSettlement.Assign(OldList.Data[loop], True));

これは漏れやすいコードであり、コンストラクターにメソッド名 'Assign' を使用することには明白な理由から反対しますが、修正する義務 はありません。

仕事に誇りを持っているので改善したい。

Assignメソッドをコンストラクターからプロシージャーに変更し、への呼び出しを削除することを提案していますCreate()。これにより、アプリケーションの多くの場所でコードを変更する必要があります。明らかに、これを行うにはリスクがあります。

飛び込んでクラッキングする前に、私が検討すべき代替アプローチを誰かが提案できますか?

私が知っておくべき、私が考えていなかった可能性のある落とし穴はありますか?

4

1 に答える 1