AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Procedurbezeichnung

Ein Thema von bernau · begonnen am 15. Sep 2011 · letzter Beitrag vom 16. Sep 2011
Antwort Antwort
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#1

AW: Procedurbezeichnung

  Alt 15. Sep 2011, 15:52
Mit der Benennung stimmt da so einiges nicht. "WorkFile" heißt "ArbeiteDatei". Das ist unverständlich. Wenn du "Arbeitsdatei" ausdrücken wolltest.
Na ja. Man sagt ja auch Workflow. Und das heist ja auch nicht "ArbeiteAblauf" sondern "ArbeitsAblauf".
Sry, aber Workflow ist ein feststehender Begriff.

Zitat:
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.
Dann müsste ja jede Function ein "Get" im Namen beinhalten, weil Sie ja immer etwas macht und zurückgibt. Ein WorkingFilename finde ich leserlicher als GetWorkingFilename.
Dann lies mal, was Luckie geschrieben hat. Über ne Property kriegst du genau diesen Bezeichner. Properties sind nämlich i.d.R. Substantive.

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.
Also ich weiß ja nicht, wo du Grammatik gelernt hast, aber bei mir ist "is" definitiv ein Verb. 3. Person Singular. Präsens Aktiv von "to be".

Zitat:
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
Warum sollte es nicht Aufgabe der Funktion sein, eine Rückgabeeigenschaft auszuwerten.
Ich gebe zu, dass das hier ein Grenzfall ist. Der Punkt ist jedenfalls, dass es ein Warnsignal ist, wenn Probleme hast, einen sinnvollen Namen zu vergeben.

Auch das sehe ich anders. Wenn ich oft Funktionen verschachteln muss, dann mache ich daraus eine neue Funktion. Was kann man besser lesen.
Code:
result:=comparetext(ExtractFileDir(WorkingFileName),ExtractFileDir(EineAndereDatei))=0;

result:=comparetext(WorkingFileDir,EineAndereDateiDir)=0;
Ich finde, das Zweite Beispiel ist besser zu lesen.
Deshalb verwendet man Variablen um Werte mit passenden Namen zwischen zu speichern.

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Procedurbezeichnung

  Alt 15. Sep 2011, 16:00
Also alle Meinungen über einen Kamm geschoren mental zusammenfassend, würde ich glaube ich der Klasse die Funktion als private und mit get im Namen spendieren und die Ergebnisse als nur lesbare Properties (Name dann ohne Get) nach aussen geben. Von aussen sieht das dann ja wie eine Variable aus (zumindest in Sprachen, wo hinter Funktionen immer noch ein () gehört).
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Procedurbezeichnung

  Alt 15. Sep 2011, 16:10
Also alle Meinungen über einen Kamm geschoren mental zusammenfassend, würde ich glaube ich der Klasse die Funktion als private und mit get im Namen spendieren und die Ergebnisse als nur lesbare Properties (Name dann ohne Get) nach aussen geben. Von aussen sieht das dann ja wie eine Variable aus (zumindest in Sprachen, wo hinter Funktionen immer noch ein () gehört).
Das ist ja eigentlich nicht der Sinn der Sache, auch wenn eine "sprechende" Schnittstelle nicht zu verachten ist.
Wesentlicher ist ja eigentlich, daß der vollständige Sourcecode leicht lesbar und verständlich ist.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.312 Beiträge
 
Delphi 12 Athens
 
#4

AW: Procedurbezeichnung

  Alt 15. Sep 2011, 16:11
Sry, aber Workflow ist ein feststehender Begriff.
<scherz an>Wenn ich oft genug WorkFile schreibe, dann ist es bald auch ein feststehender Begriff<scherz aus>

Dann lies mal, was Luckie geschrieben hat. Über ne Property kriegst du genau diesen Bezeichner. Properties sind nämlich i.d.R. Substantive.
OK, ich könnte ein Nur-Lese-Property verwenden statt einer Funktion.

Also ich weiß ja nicht, wo du Grammatik gelernt hast, aber bei mir ist "is" definitiv ein Verb. 3. Person Singular. Präsens Aktiv von "to be".
Ähm... Ich werde mich bei meiner Schule beschweren.

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:
result:=comparetext(ExtractFileDir(WorkingFileName),ExtractFileDir(EineAndereDatei))=0;

result:=comparetext(WorkingFileDir,EineAndereDateiDir)=0;
Ich finde, das Zweite Beispiel ist besser zu lesen.
Deshalb verwendet man Variablen um Werte mit passenden Namen zwischen zu speichern.
Du findest also folgendes besser zu lesen?

Code:
  lWorkingFileDir:=ExtractFileDir(WorkingFileName);
  lEineAndereDateiDir:=ExtractFileDir(EineAndereDatei);
  result:=comparetext(lWorkingFileDir,lEineAndereDateiDir)=0;
(Kratz am Kopf)
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Procedurbezeichnung

  Alt 15. Sep 2011, 16:18
Delphi-Quellcode:
  Arbeitsverzeichnis:=ExtractFileDir(WorkingFileName);
  Vergleichsverzeichnis:=ExtractFileDir(EineAndereDatei);
  result:=comparetext(Arbeitsverzeichnis,Vergleichsverzeichnis)=0;
Delphi-Quellcode:
  CurrentDirectory:=ExtractFileDir(WorkingFileName);
  DefinedDirectory:=ExtractFileDir(EineAndereDatei);
  result:=comparetext(CurrentDirectory,DefinedDirectory)=0;
No soo schlimm ist das auch nicht.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.312 Beiträge
 
Delphi 12 Athens
 
#6

AW: Procedurbezeichnung

  Alt 15. Sep 2011, 16:26
Delphi-Quellcode:
  Arbeitsverzeichnis:=ExtractFileDir(WorkingFileName);
  Vergleichsverzeichnis:=ExtractFileDir(EineAndereDatei);
  result:=comparetext(Arbeitsverzeichnis,Vergleichsverzeichnis)=0;
Delphi-Quellcode:
  CurrentDirectory:=ExtractFileDir(WorkingFileName);
  DefinedDirectory:=ExtractFileDir(EineAndereDatei);
  result:=comparetext(CurrentDirectory,DefinedDirectory)=0;
No soo schlimm ist das auch nicht.

Gruß
K-H
Es ging darum, daß r2c2 einen "Dreizeiler" einem "Einzeiler" vorzieht.

Wenn schon dann:

Delphi-Quellcode:
  CurrentDirectory:=ExtractFileDir(WorkingFileName);
  DefinedDirectory:=ExtractFileDir(EineAndereDatei);
  result:=comparetext(CurrentDirectory,DefinedDirectory)=0;
Delphi-Quellcode:

   result:=comparetext(WorkingFileDir,EineAndereDateiDir)=0;


Ich finde die zweite Variante, ohne die vorherige zuweisung auf Variablen, besser.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#7

AW: Procedurbezeichnung

  Alt 15. Sep 2011, 17:06
[
Es ging darum, daß r2c2 einen "Dreizeiler" einem "Einzeiler" vorzieht.
Das ist das, was ich auf den Delphi-Tagen versucht hab zu erklären: einfach <> kurz.

Wenn es in meine Code das Prinzip gibt, dass immer und überall der vollständige Pfad verwendet wird, brauche ich nicht zu überlegen, welche der drei möglichen Funktionen ich nun verwenden muss (und werde da auch keine unnötigen Fehler machen). Ich weiß, dass ich immer nur eine Funktion hab und das Ergebnis ist in einem bekannten Format. Möchte ich nun ein anderes Format oder nur einen teil der Information haben, hab ich Funktionen, die das für mich erledigen.

Mein Code wird dadurch länger und langweiliger, ja. Aber ich schreibe Code nur einmal, lese ihn aber viel viel öfter. Somit muss Code leicht zu lesen sein. Ob er irgendwann mal ein paar Sekunden beim Schreiben eingespart hat, ist irrelevant.

Entwickler sträuben sich tendenziell dagegen, "langweiligen" Code zu schreiben Ich will mich da auch gar nicht mal ausnehmen. Auch ich hab die Tendenz. Aber langweiliger Code hilft dabei, Fehler zu vermeiden. Ich mein, das hier ist ein triviales Beispiel, aber, wenn man über den gesamten Code hinweg so arbeitet, vermeidet man tendenziell Fehler, weil man weniger übersieht.

Man darf da gerne anderer Meinung sein, aber ich denke, ich bin mit dieser Position nicht ganz alleine.


mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.312 Beiträge
 
Delphi 12 Athens
 
#8

AW: Procedurbezeichnung

  Alt 16. Sep 2011, 09:06
Sagen wir mal so, der Einzeiler von meinem Beispiel ist einfacher zu schreiben UND einfacher zu lesen, da am Variablennamen erkenntlich ist, ob es sich um einen Dateinamen, Pfad oder beides handelt.

Aber deine Ansicht ist mir nicht ganz fremd. Ich verwende sehr oft Variablen um Daten zwischenzuspeichern, weil es einfacher zu debuggen ist.
Anstatt in einer Function fünf mal MeineStringlist[aIndex] zu verwenden, weise ich diesen Wert einer Variablen zu und arbeite damit weiter.

Langweiligen Code schreibe ich auch öffters. Ich nehme sehr gerne zusätzliche begin..end um einen Abschnitt in einer Procedure zu kennzeichnen. Ich weis, eine Procedure sollte man so kurz wie möglich halten, manchmal habe ich aber schon über 40 Zeilen in einer Procedure. Dann wirkt das aufteilen mit begin..end ware Wunder.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 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-2025 by Thomas Breitkreuz