![]() |
Procedurbezeichnung
Keine weltbewegende Frage. Aber ich sitze seit eine viertel Stunde vor einem gaaanz trivialen Problem. Wie schreibe ich schönen Code! :-D
Ich habe in einer Klasse folgende Funktion:
Code:
Manchmal benötige ich im Programm den kompletten Pfad inkl. Datei. Manchmal nur die Datei und manchmal nur den Pfad. Kein Problem mit ExtractFilePath und ExtractFileName. Aber diese Funktionen könnte ich wegen der besseren Lesbarkeit wegrationalisieren und müsste eigendlich nur zwei Funktionen zufügen. Aber wie benenne ich die? Irgendwie fallen mir nur besonders blöde Namen ein.
function WorkFile:string;
Code:
WorkFileFile hört sich irgendwie komisch an. Mir fällt aber nichts anderes ein.
function WorkFile:string; // Gibt den kompletten Pfad inkl. Dateiname zurück. Sollte so bleiben, weil immer schon so war.
function WorkFileDir:string; // Gibt nur den Pfad zurück. function WorkFileFile:string; // Gibt nur den Dateinamen zurück. Oder sollte ich alles in eine Funktion auslagern
Code:
Wie gesagt: Tivial. Aber es beschäftigt. Habe ja sonst auch nichts anderes zu tun :evil:
function WorkFile(aReturnPath:boolean=true;aReturnFilename:boolean=true):string;
Was meint Ihr? |
AW: Procedurbezeichnung
Wie wäre denn so etwas?
Delphi-Quellcode:
type
TWorkfileType = (wfFull, wfPath, wfFile); function WorkFile(ReturnType: TWorkfileType = wfFull): string; |
AW: Procedurbezeichnung
Was macht denn die Funktion WorkFile? Wie du siehst, muss ich frage, also schon ein schlechter Funktionsname. Und ist das in einer Klasse gekapselt? Wenn ja, sagt deren Name ja schon aus um was es geht, so dass FilePath und Filename schon aussagekräftig genug sind. (File könnte dann Datei mit Pfad sein.)
|
AW: Procedurbezeichnung
Ich würde zunächst auch statt WorkFile eher WorkFileName vorschlagen, denn die Funktion liefert ja kein File sondern einen Namen. Wir haben in einer Bibliothek mal eine Klasse TDatei gehabt die hatte dann die Propertys:
Fullname, Name und Dir oder Path, weiß ich gerad nicht mehr. |
AW: Procedurbezeichnung
@Luckie: Workfile (Arbeitsdatei) ist die Datei, die grade bearbeitet wird und ist eine Funktion innerhalb einer Klasse.
@Jumpy: Hast recht. WorkFileName wäre eigendlich besser. @DeddyH: An eine Aufzählung habe ich auch schon gedacht. Dann wieder verworfen. Denke aber, das ist die besste Lösung. Wäre interessant zu wissen, ob so ein Type schon irgendwo definiert ist. |
AW: Procedurbezeichnung
Mit der Benennung stimmt da so einiges nicht. "WorkFile" heißt "ArbeiteDatei". Das ist unverständlich. Wenn du "Arbeitsdatei" ausdrücken wolltest. so wäre das WorkingFile oder (mehr oder weniger) CurrentFile. Aber auch das ist nichts für eine Funktion. Eine Funktion sollte i.d.R. ein Verb im Namen haben, denn sie ist nichts, sondern tut etwas. Und das mit File und FileName wurde ja schon gesagt. Also wenn dann getWorkingFileName oder getCurrentFileName.
Boolean-Parameter halte ich für eine ganz schlechte Idee. Die Dinger sind Kontrollkopplunten und zudem schlecht lesbar. Siehe hier: ![]() ![]() Auch enum-Parameter halte ich nicht für gut. Das sind nämlich immer noch Kontrollkopplungen und zeugen davon, dass die Funktion etwas tut, was eigentlich nicht ihre Aufgabe ist. ==> SingeResponsibilityPrinciple Ich würde deshalb immer, wenn cih mit Datennamen arbeite den kompletten Pfad zurück geben und ggf. ExtraxtFileXY anwenden. Wenn du das immer so tust, ist auch immer klar, was passiert. Wenn es Ausnahmen gibt (was giobt die Funktion nochmal zurück?) entstehen unnötige Leichtsinnsfehler. mfg Christian |
AW: Procedurbezeichnung
Und wie heißt die Klasse? Wie wäre es mit CurrentFilename und CurrentFilePath als Bezeichnungen für die Properties? Und wenn die dahinter liegende Methode sicherstellt, dass CurrentFilePath sicherstellt, dass der Pfad mit einem Backslash endet, dann kann man das ganze ohne Probleme zusammensetzen.
|
AW: Procedurbezeichnung
Zitat:
Zitat:
Es gibt auch Funktionen, die geben einfach einen Zustand zurück. Da schreibe ich doch eher "IsHot" als "GetIsHot". Da ist nichts mit Verb. Zitat:
Zitat:
Zitat:
Auch das sehe ich anders. Wenn ich oft Funktionen verschachteln muss, dann mache ich daraus eine neue Funktion. Was kann man besser lesen.
Code:
Ich finde, das Zweite Beispiel ist besser zu lesen.
result:=comparetext(ExtractFileDir(WorkingFileName),ExtractFileDir(EineAndereDatei))=0;
result:=comparetext(WorkingFileDir,EineAndereDateiDir)=0; |
AW: Procedurbezeichnung
Meinen Beitrag hast du gelesen?
|
AW: Procedurbezeichnung
Zitat:
Die Klasse nennt sich "TccParamStr". Die Klasse kapselt Funktionen um die Komandozeilenparameter (gelesen mit ParamStr(x)) besser auswerten zu können. Komoandozeilenparameter gibt es in der Regel in drei verschieden Arten. (Bei mir zumindest.) 1) Parameter ohne Wert: z.B. "debug" oder "ShowError" 2) Parameter mit Wert: z.B. "Value=1" 3) Dateinamen. (z.B. weil über den Explorer eine Datei auf die EXE gezogen wurde) Die Parameter können in einer beliebigen Reihenfolge erscheinen. Wenn ein Dateiname übergeben wurde, dann ist das in der Regel die Datei die bearbeitet werden soll. Deshalb der Name "WorkFile". (Jetzt WorkingFileName ;-) ) D.h. die Funktion sucht aus allen übergebenen Parametern den heraus, der einen Dateinamen beinhaltet. Der wird in "WorkingFileName" zurück gegeben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz