Sto lavorando a un progetto in delphi e sto creando un programma di installazione per l'applicazione, ci sono tre parti principali.
- PostgreSQL installazione / disinstallazione
- myapplication (installazione di myapplication viene creata utilizzando nsi) installation / uninstallation.
- Creazione di tabelle in Postgres tramite script (file batch).
Ogni cosa funziona bene e senza problemi, ma se qualcosa non funziona ho creato un LogToFileger che LogToFile eseguirà ogni fase del processo,
come questo
LogToFileToFile.LogToFile('[DatabaseInstallation] : [ACTION]:Postgres installation started');
La funzione LogToFileToFile.LogToFile()
Scriverà il contenuto in un file. Funziona bene, ma il problema è che questo ha incasinato il codice in quanto è diventato difficile leggere il codice in quanto si può vedere solo la chiamata di funzione LogToFileToFile.LogToFile()
ovunque nel codice
un esempio
if Not FileExists(SystemDrive+'\FileName.txt') then
begin
if CopyFile(PChar(FilePathBase+'FileName.txt'), PChar(SystemDrive+'\FileName.txt'), False) then
LogToFileToFile.LogToFile('[DatabaseInstallation] : copying FileName.txt to '+SystemDrive+'\ done')
else
LogToFileToFile.LogToFile('[DatabaseInstallation] : copying FileName.txt to '+SystemDrive+'\ Failed');
end;
if Not FileExists(SystemDrive+'\SecondFileName.txt') then
begin
if CopyFile(PChar(FilePathBase+'SecondFileName.txt'), PChar('c:\SecondFileName.txt'), False) then
LogToFileToFile.LogToFile('[DatabaseInstallation] : copying SecondFileName.txt to '+SystemDrive+'\ done')
else
LogToFileToFile.LogToFile('[DatabaseInstallation] : copying SecondFileName.txt to '+SystemDrive+'\ Failed');
end;
come puoi vedere ci sono molte chiamate LogToFileToFile.LogToFile()
,
prima che fosse
if Not FileExists(SystemDrive+'\FileName.txt') then
CopyFile(PChar(FilePathBase+'FileName.txt'), PChar(SystemDrive+'\FileName.txt'), False)
if Not FileExists(SystemDrive+'\SecondFileName.txt') then
CopyFile(PChar(FilePathBase+'SecondFileName.txt'), PChar('c:\SecondFileName.txt'), False)
questo è il caso nel mio intero codice ora.
è difficile da leggere.
qualcuno mi può suggerire un buon modo per slegare le chiamate a LogToFile?
come
-
Indentazione della chiamata "LogToFileToFile.LogToFile ()"
come questoif Not FileExists(SystemDrive+'\FileName.txt') then begin if CopyFile(PChar(FilePathBase+'FileName.txt'), PChar(SystemDrive+'\FileName.txt'), False) then {Far away--->>} LogToFileToFile.LogToFile(2,'[DatabaseInstallation] : [ACTION]:copying FileName.txt to '+SystemDrive+'\ sucessful') else {Far away--->>} LogToFileToFile.LogToFile(2,'[DatabaseInstallation] : [ACTION]:copying FileName.txt to '+SystemDrive+'\ Failed'); end;
-
Separa unità come
LogToFileger
Questa unità avrà tutti i messaggi LogToFile in unswitch case
come questoFunction LogToFilegingMyMessage(LogToFilegMessage : integer) begin case LogToFilegMessage of 1 : LogToFileToFile.LogToFile(2,'[DatabaseInstallation] : [ACTION]:copying FileName.txt to '+SystemDrive+'\ sucessful'); 2 : LogToFileToFile.LogToFile(2,'[DatabaseInstallation] : [ACTION]:copying FileName.txt to '+SystemDrive+'\ Failed'); 150 : LogToFileToFile.LogToFile(2,'[somthing] : [ACTION]: somthing important); end;
quindi posso semplicemente chiamare LogToFilegingMyMessage (1) dove richiesto.
Qualcuno può dirmi qual è un approccio migliore e più pulito a LogToFileging in questo modo?