古代から受け継がれたソフトウェアを伴う、現代の産業文化の場所に関する慎重な楽観的な考察。そして、SOLIDの原則の相互浸透について少し。
私は体系的にDelphi7を使用しています(そのように動作します、cho ...)。私は、2000年代初頭から中期にルーツを持ち、冷酷な命令型の手続き型で記述されたアプリケーションを維持し、積極的に改良しています。そのような環境で精神的に生き残ることは可能ですか?結局のところ、「彼らを倒す唯一の方法は、彼らの一人にならないことです」でしょ?
あなたは実際にここでこのようなものを見ることができます:
procedure TReport13Form.OnButton1Click(Sender: TObject);
begin
with MainForm.WorkQuery.SQL do
begin
Add('Select ...');
if ... then
Add(', ...');
Add('from ...');
if ... then
Add('join...');
... // - .
Add(Format('where id = %d and operDate = %s',
[id, QuotedStr(DToS(DatePicker1.Date))]));
...および他の同様の猥褻。
しかし、すべてを最初から書き直すことは、根本的な宗教的狂信の領域からのものです(Delphi 7について聞いた直後に誰かが叫んでスリッパを自動的に振ったかのように)。
経験から私は言うでしょう:あなたはそうすることができます。はい、その結果、プログラムのソースコードのスタイルの統一性に違反していますが、これは起こりうる最悪の事態とはほど遠いものです。最悪なのは「そのうちの1つになる」ことです(1)。
1) : . ( , ) : , , , git(2). . . . , .
2) , git - . , CVS (git ) " ".
, . " "? , : " , : !"? , , , , , , . , , SOLID?
, . -- - ( , , - ). VCL, , . , , . . .
, , : https://bitbucket.org/danik-ik/layoutkeeper/
.
:
ILayoutKeeper - , . .
ILayoutProcessor - . , ,
() , , , (Keeper) (Processor).
, .
, .
S. Single responsibility principle
( ) , : , , / .
, . . . . , S.principle .
O. Open-Closed principle
, Closed ( , , ), ? , . , ! .
. , Delphi , , , , , , , I. , , , (Open) (Closed). , , . ( - ).
L. Liskov substitution principle
, , ( ) : ( ), , , , , " " . () : . , (, ), ( ).
, ) , ) , .
() , , , , S - - ( - ), , .
() - , " " TForm, Forms.TForm uses Forms, . ? , , (?). , S L.
I. Interface segregation principle
: . , S. (ILayoutKeeper) "" (ILayoutProcessor), . , -- S , .
D. Dependency inversion principle
. , , , . ini-, ( , , ) MainForm, - . . , , -- . (), ( ). . D S , , - , . , , . "" EhLib , .
"" -- OeStrUtil, -, . (RxStrUtils.ExtractWord, ), . - , . .
, ? , . .
. , . " ", . SOLID- , . S I , D O (, pet- ), L , , , ( , S O).