Vorsichtige optimistische Überlegungen zum Ort der modernen Industriekultur, begleitet von Software, die aus der Antike stammt. Und ein wenig über die Durchdringung von SOLID-Prinzipien.
Ich arbeite systematisch mit Delphi 7 (arbeite so, cho ...). Ich pflege und verfeinere aktiv eine Anwendung, die ihre Wurzeln in den frühen bis mittleren 2000er Jahren hat und in einem rücksichtslosen imperativen Verfahrensstil geschrieben ist. Ist es möglich, in einer solchen Umgebung mental zu überleben? Immerhin "ist der einzige Weg, sie zu besiegen, nicht einer von ihnen zu werden", oder?
Sie können so etwas tatsächlich hier sehen:
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))]));
... und andere ähnliche Obszönitäten.
Aber alles von Grund auf neu zu schreiben, ist etwas aus dem Bereich des radikalen religiösen Fanatismus (als ob jemand schrie und automatisch einen Pantoffel schwang, kurz nachdem er von Delphi 7 gehört hatte).
Aus Erfahrung werde ich sagen: Sie können. Ja, infolgedessen wird die Stilgleichmäßigkeit des Quellcodes des Programms verletzt, aber dies ist alles andere als das Schlimmste, was passieren kann. Das Schlimmste ist, „einer von ihnen zu werden“ (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).