次のことを考慮してください
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()
。これにより、アプリケーションの多くの場所でコードを変更する必要があります。明らかに、これを行うにはリスクがあります。
飛び込んでクラッキングする前に、私が検討すべき代替アプローチを誰かが提案できますか?
私が知っておくべき、私が考えていなかった可能性のある落とし穴はありますか?