Module - Konventionen bei Prozedurenamen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Module - Konventionen bei Prozedurenamen

Beitrag von STARGÅTE »

TroaX hat geschrieben: 18.10.2023 18:33 Es mag ja durchaus sein, das man dem Drang nicht widerstehen kann, eine bereits existierende Prozedur durch eine eigene Implementierung ersetzen möchte.
In diesem Fall will ich ja gar nicht die Abs() Funktion von PureBasic ersetzen, sondern nur ermöglichen, dass es in einem Modul auch eine Funktion Abs() geben kann, die nun mal genauso heißt, weil sie eigentlich das gleiche Machen soll, nur für einen anderen Zahlentyp.
Klar ich könnte sie auch AbsComplex oder AbsC oder C_Abs nennen, am "schönsten" aussehen und am lesbarsten finde ich aber C::Abs() oder gerne auch Cmplx::Abs()
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Module - Konventionen bei Prozedurenamen

Beitrag von TroaX »

STARGÅTE hat geschrieben: 18.10.2023 19:55Klar ich könnte sie auch AbsComplex oder AbsC oder C_Abs nennen, am "schönsten" aussehen und am lesbarsten finde ich aber C::Abs() oder gerne auch Cmplx::Abs()
Kann das sein, das wir beide ...
1. ... unterschiedliche Auffassungen dazu haben, wie man Module einsetzen sollte?
2. ... unterschiedliche Auffassungen dazu haben, wie man generell mit der Benennung von Modulen und ggf. Prozeduren umgehen sollte?
3. ... unterschiedliche Auffassungen dazu haben, was gut lesbar ist und was nicht?

Ich werde das blöde Gefühlt nicht los, das für dich "lesbar" bedeutet, so wenig Zeichen wie möglich zu verwenden. Du sparst sogar 2 Buchstaben bei den Begriff "Complex" noch ein. Ich denke es ist für dich lesbarer, weil du natürlich wissen musst, was dahinter steckt und für dich in der Kürze die Würze liegt. Ich sehe das aber definitiv mal komplett ganz und gar anders. :lol:
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Module - Konventionen bei Prozedurenamen

Beitrag von NicTheQuick »

Ich würde das Module auch eher "Complex" nennen, aber ich würde definitiv bei "Abs()" bleiben wollen.
Benubi
Beiträge: 187
Registriert: 22.10.2004 17:51
Wohnort: Berlin, Wedding

Re: Module - Konventionen bei Prozedurenamen

Beitrag von Benubi »

Ich bin da noch nicht ganz festgelegt und probiere noch rum. Allgemein kann es auch schon schwer sein den richtigen Modulnamen zu wählen; auch hier ist es von Vorteil wenn dieser kurz gehalten wird (selbstverständlich).

Ich benutze meistens UnuseModule nach dem UseModule.

Code: Alles auswählen

Module B
UseModule A
(...)
(...)
UnUseModule A
EndModule ; 


; ---- main scope
Procedure MyProc()
 UseModule B
 ; ....
   ProcedureReturn 
 UnuseModule B
EndProcedure
Bei Konstruktoren und Desktruktoren habe ich zu Anfangs einfach New() und Free() als Namen genutzt, aber das verursacht Konflikte und oft habe ich "überladene" (mehrere hehe) Konstruktoren. Daher gebe ich lieber den Objektnamen mit an.

Code: Alles auswählen

; Declares...
Module Object
Procedure CreateObject()
EndProcedure
Procedure FreeObject() 
EndProcedure
EndModule 
Wenn dann aber ein Interface für das "Objekt" bereitgestellt wird dann kürze ich wieder die Namen so sehr es geht und Sinn macht

Code: Alles auswählen

Interface Object
  Create()
  Free()
Manchmal muss ich dennoch Präfixe nutzen, weil es ohnehin Kollisionen mit dem PB Namensraum gibt wie z.B. Tree_AddElement() ResourceManager_LoadImage() oder XYZ_CreateNode() aber wenn man seine Strukturen/Objekte einfach umbenennt z.B. "Element" zu "Item", dann hat kann man es auch meist easy umgehen.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Module - Konventionen bei Prozedurenamen

Beitrag von DarkDragon »

TroaX hat geschrieben: 18.10.2023 23:24
STARGÅTE hat geschrieben: 18.10.2023 19:55Klar ich könnte sie auch AbsComplex oder AbsC oder C_Abs nennen, am "schönsten" aussehen und am lesbarsten finde ich aber C::Abs() oder gerne auch Cmplx::Abs()
Kann das sein, das wir beide ...
1. ... unterschiedliche Auffassungen dazu haben, wie man Module einsetzen sollte?
2. ... unterschiedliche Auffassungen dazu haben, wie man generell mit der Benennung von Modulen und ggf. Prozeduren umgehen sollte?
3. ... unterschiedliche Auffassungen dazu haben, was gut lesbar ist und was nicht?

Ich werde das blöde Gefühlt nicht los, das für dich "lesbar" bedeutet, so wenig Zeichen wie möglich zu verwenden. Du sparst sogar 2 Buchstaben bei den Begriff "Complex" noch ein. Ich denke es ist für dich lesbarer, weil du natürlich wissen musst, was dahinter steckt und für dich in der Kürze die Würze liegt. Ich sehe das aber definitiv mal komplett ganz und gar anders. :lol:
Das kommt immer darauf an wie häufig man etwas verwendet. Unter C++ würde ich auch nicht "standard::" ausschreiben wollen, da schreibt man lieber die, ohne Kontextwissen vielleicht verstörende Abkürzung "std::". Wenn man jedoch abs abändert ist das ein noch viel größerer Stilbruch, denn die Funktion heißt in tausenden von Frameworks nunmal abs.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Module - Konventionen bei Prozedurenamen

Beitrag von STARGÅTE »

TroaX hat geschrieben: 18.10.2023 23:24 Kann das sein, das wir beide ...
1. ... unterschiedliche Auffassungen dazu haben, wie man Module einsetzen sollte?
2. ... unterschiedliche Auffassungen dazu haben, wie man generell mit der Benennung von Modulen und ggf. Prozeduren umgehen sollte?
3. ... unterschiedliche Auffassungen dazu haben, was gut lesbar ist und was nicht?
Kann ich nicht beantworten, aber ich kann dich ja mal direkt Fragen, wie du eine Funktion (und das Modul) nennen würdest, die den Betrag einer Komplexen Zahl berechnen soll.
TroaX hat geschrieben: 18.10.2023 23:24 Ich werde das blöde Gefühlt nicht los, das für dich "lesbar" bedeutet, so wenig Zeichen wie möglich zu verwenden. Du sparst sogar 2 Buchstaben bei den Begriff "Complex" noch ein. Ich denke es ist für dich lesbarer, weil du natürlich wissen musst, was dahinter steckt und für dich in der Kürze die Würze liegt. Ich sehe das aber definitiv mal komplett ganz und gar anders. :lol:
Ja gut, das mit Cmplx war vielleicht etwas überspitzt. Eigentlich tendiere ich auch ehr zu längeren Variable- oder Funktionsnamen, anstatt einem "i" auch gerne mal "Index" oder "Position" zu schreiben.
Gerade bei Mathe-Modulen schreibe ich (und vielleicht auch andere) Formeln aber gerne als Einzeiler.
Wenn ich also z.B. die Wurzel einer komplexen Zahl über e^(0.5*log(z)) berechnen will, würde der Code in meiner "Wunsch"-Welt z.B. so aussehen:

Code: Alles auswählen

C::Exp(C::Scale(C::Log(*Z), 0.5))
Das würde sich aber schnell aufblähen, wenn ich die PB-Kollisionen berücksichtige und das Modul ausschreibe:

Code: Alles auswählen

C::C_Exp(C::C_Scale(C::C_Log(_Z), 0.5))
C::Exponential(C::Scale(C::Logarithm(*Z), 0.5))
Complex::Exponential(Complex::Scale(Complex::Logarithm(*Z), 0.5))
Natürlich ist der letzte Code lesbarer im Sinne des Verständnisses für einen Dritten.
Der erste Code ist in meinen Augen aber auf mathematischer Ebene schneller erfassbar, weil Mathematiker nun mal auf kurze Funktionsnamen getrimmt sind.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten