with文の是非(2/3)

4.構造上の欠陥(将来的にバグを生む原因となる可能性)
1以上に深刻かつ致命的な問題点です。
これは例を使って説明します。
<例>
・先ず2つのクラスTCls1, TCls2があったとします。これらはそれぞれ
 別のユニットで定義されていたとします。

----------------------------------------------------------------
[クラスTCls1]
unit Unit2;

interface
uses Classes;

type
TCls1 = class
class function Func1( slst: TStrings ) : TStrings;
class function Func2() : String;
end;

implementation
uses Windows, Unit3;

class function TCls1.Func1( slst: TStrings ) : TStrings;
begin
result := slst;

with TCls2 do
begin
slst.Add( FuncA() );
slst.Add( Func2() );
end;
end;

class function TCls1.Func2() : String;
begin result := 'TCls1.Func2()'; end;
----------------------------------------------------------------
[クラスTCls2]
unit Unit3;

interface

type
TCls2 = class
class function FuncA() : String;
end;

implementation
uses Windows;

class function TCls2.FuncA() : String;
begin result := 'TCls2.FuncA()'; end;