Mehrzeilige Anweisungen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag von jear »

@Little John
Deine Initiative ist prima und die Lösung als IDE-PlugIn ebenfalls.
Allerdings stimme ich Mr. X zu. Das Verbindungszeichen (per Default '_') sollte besser am Anfang einer Folgezeile stehen. Für mich überwiegen die Vorteile im Hinblick auf Übersichtlichkeit und Eindeutigkeit.
Die Tatsache, dass das bei anderen Sprachen anders ist, sollte nicht maßgeblich sein.
Das Ganze könnte man aber durch eine Umfrage unter den Nutzern klären.
Zuletzt geändert von jear am 22.10.2006 10:30, insgesamt 1-mal geändert.
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

Das sehe ich nun wieder anders, ich könnte mich nicht daran gewöhnen ein Zeilentrennzeichen an den Anfang zu stellen, das macht keinen Sinn. Wenn wir schon auf ein Zeilenendezeichen am Ende der Zeile, wie bei vielen anderen Sprachen normal, verzichten, dann sollte wenigstens das Trennzeichen am Ende stehen.

@Mr.X: Dir scheint die "_" Variante zu gefallen, mir nicht. Solange es keinen von den PB-Entwicklern herausgegebener Standard gibt, ist alles weitere Geschmackssache. Und solange es Geschmackssache ist, ist es auch egal, wie das Zeichen letztendlich aussieht. Jeder, der jetzt einen Code mit diesem Plugin erstellt, muss sowieso anmerken, dass dieses Plugin genutzt werden muss und erklären wie es funktioniert, gerade weil es eben kein Standard ist. Und da ich es sowieso erwähnen muss, kann es auch schei$egal sein, wie das Zeichen aussieht. Weil es bei der einen oder anderen Sprache eben dieses Zeichen ist, macht es vielleicht intuitiver, mehr aber auch nicht. Und nur weil es andere Sprachen haben, muss es nicht besser sein. Wir sind auch keine Trendsetter, die mit diesem Plugin eine Grundregel für die nächste PB-Version festlegen, deshalb brauchen wir uns auch nicht in einer Konferenz auf eine neue PB-Norm einigen müssen.
Ich habe deine Bedenken gehört und kann sie nachvollziehen. Es ist wünschenswert, dass es vereinheitlicht wird, allerdings nicht von uns, sondern von Fred. Und nur weil das poplige Trennungszeichen anders aussieht, wird der Code nicht weniger leserlich. Soviel Umdenkarbeit bekommt jeder hin.
Optimismus ist ein Mangel an Information.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Daher denke ich ist es flexibler, wenn eine benutzerdefinierte Zeilenverbindungs-Markierung zur Laufzeit als Parameter angegeben werden kann.

zu wessen laufzeit?

vielleicht kam es aufgrund der "#" nicht ganz rüber.
ich meine keine Konstante, sondern eine Precompiler-Direktive.

mein grundgedanke war folgender:

Code: Alles auswählen

PreCom_MultiLine ON
PreCom_MultiLine_Char "#"
; Code von blablub
; und
; so
; weiter
durch die prcompiler-direktive in der ersten zeile wird das IDE-Plugin aktiv.
durch das in der zweiten zeile weiß es, dass nicht das default "_" verwendet werden soll.

wer jetzt fremden code compilieren will, muss nichts aber auch garnichts einstellen oder sonstwas.
direkt in den ersten beiden zeilen steht alles drin, code ist genauso portabel wie er immer war.
(hier halt mit der einschränkung, dass wer ihn nutzen will auch das precompiler-plugin haben muss)

aber das sind nur ideen und vorschläge.
es gibt bestimmt genügend leute, die das plugin garnicht verwenden werden.

----------------------------------------------------
Mr.X hat geschrieben:@Kaeru Gaman
Dein Vorschlag mit der PreCompiler-Direktive wäre zwar in Prinzip ein Kompromiss, führt aber in die gleiche Sackgasse. Um jemandem mit seinem Programmierproblem helfen zu können, reicht es nicht aus seinen Programmsource bei mir zu übersetzen, nein ich muß erst zig Einstellungen in meiner Programmierumgebung ändern nur für einen Compilerlauf. - Totaler Schwachsinn !!
hoffentlich siehst du jetzt, dass deine entgegnung "Totaler Schwachsinn !!" war.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag von jear »

@Hellhound66

Welche Fragen sind den offen :

- Trennzeichen oder Verbindungszeichen?
- Welches Zeichen?
- Wo soll das Zeichen stehen?

Meine Wünsche:

- Verbindungszeichen
- der Unterstrich _
- Am Anfang der Folgezeile

Beispiel :

Code: Alles auswählen

Procedure.l Test(                   ; macht Dies und Jenes
            _Param1.l,              ; Handle
            _Param2.w)              ; sonstwas
  
  Protected ww.w,                   ; auch nötig 
            _bb.b,                  ; auch nötig

  ; nun wirds gemacht
            
EndProcedure
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

Meine Wünsche:

- Verbindungszeichen
- Optional
- Am Ende der Zeile


Mein Code mit deiner Variante:

Code: Alles auswählen

*OBJECT\SetParams(_HEADER.tHEADER,            ;# Bla
             _ _Param_Setting,               ;# Blubb
             _ @*Device.tDEVICESET)     ;# Laber
= Gefällt mir überhaupt nicht, da ich ein Unterstrich-für-Variablen-Benutzer bin.


Mein Code mit der Standardvariante:

Code: Alles auswählen

*OBJECT\SetParams(_HEADER.tHEADER,          _   ;# Bla
                  _Param_Setting,           _   ;# Blubb
                  @*Device.tDEVICESET)          ;# Laber
= Schon besser, aber die vielen Unterstriche lassen mich durcheinander kommen.


Mein Code mit einer optionalen Variante:

Code: Alles auswählen

*OBJECT\SetParams(_HEADER.tHEADER,         %BIND%       ;# Bla
                  _Param_Setting,          %BIND%       ;# Blubb
                  @*Device.tDEVICESET)                  ;# Laber
= Gefällt mir wesentlich besser.


Mein Code mit einer anderen optionalen Variante:

Code: Alles auswählen

*OBJECT\SetParams(_HEADER.tHEADER,        \  ;# Bla
                  _Param_Setting,         \  ;# Blubb
                  @*Device.tDEVICESET)       ;# Laber
= Gefällt mir auch ganz gut.

/edit:
Habe die Code-Ausschnitte angepasst, da ich zu wenig Leerzeichen gemacht hatte.
Zuletzt geändert von Hellhound66 am 22.10.2006 10:59, insgesamt 3-mal geändert.
Optimismus ist ein Mangel an Information.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@jear

so würde das schon mal garnicht gehen.
wenn, dann höchstens so:

Code: Alles auswählen

Procedure.l Test(                   ; macht Dies und Jenes 
            _ Param1.l,              ; Handle 
            _ Param2.w)              ; sonstwas 
  
  Protected ww.w,                   ; auch nötig 
            _ bb.b,                  ; auch nötig 

  ; nun wirds gemacht 
            
EndProcedure
ein underscore ohne abstand zum buchstaben ist bestandteil des Variablennamens.
es gibt genug leute, die die konvention mit führendem underscore pflegen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Little John

Beitrag von Little John »

2jear:
Der Preprozessor ist kompatibel zu bestehendem Code, und wird es auch bleiben. Damit hat sich die Frage nach Verwendung eines Zeilentrennzeichens erledigt, soweit es Code betrifft den ich schreibe.

Ob ein Zeilenverbindungszeichen am Anfang oder Ende einer Zeile stehen soll, ist wohl Geschmacksache. Ich persönlich mag solch ein Zeichen am Zeilenanfang nicht, d.h. ich werde den Code nicht dahin gehend ändern. Ich habe ihn aber bewusst als "public domain" deklariert, d.h. jede/r kann damit machen was sie/er will ...

Hellhound66 hat geschrieben:Wir sind auch keine Trendsetter, die mit diesem Plugin eine Grundregel für die nächste PB-Version festlegen, deshalb brauchen wir uns auch nicht in einer Konferenz auf eine neue PB-Norm einigen müssen.
Das sehe ich genauso. Man sollte das ganze hier nicht überbewerten.

2Mr.X:
Also bleib locker. :)
Kaeru Gaman hat geschrieben:> Daher denke ich ist es flexibler, wenn eine benutzerdefinierte Zeilenverbindungs-Markierung zur Laufzeit als Parameter angegeben werden kann.

zu wessen laufzeit?
Bitte vergiss es. Ich habe offenbar auf dem berühmten Schlauch gestanden. :oops:
Kaeru Gaman hat geschrieben:vielleicht kam es aufgrund der "#" nicht ganz rüber.
ich meine keine Konstante, sondern eine Precompiler-Direktive.
Ja, ich habe die ganze Zeit gedacht -- auch schon als Hellhound66 die Idee aufbrachte -- Ihr sprecht von einer Konstanten, die in das Programm 'JoinLines.pb' hineingeschrieben werden soll.
Kaeru Gaman hat geschrieben:mein grundgedanke war folgender:

Code: Alles auswählen

PreCom_MultiLine ON
PreCom_MultiLine_Char "#"
; Code von blablub
; und
; so
; weiter
durch die prcompiler-direktive in der ersten zeile wird das IDE-Plugin aktiv.
durch das in der zweiten zeile weiß es, dass nicht das default "_" verwendet werden soll.

wer jetzt fremden code compilieren will, muss nichts aber auch garnichts einstellen oder sonstwas.
direkt in den ersten beiden zeilen steht alles drin, code ist genauso portabel wie er immer war.
(hier halt mit der einschränkung, dass wer ihn nutzen will auch das precompiler-plugin haben muss)
Jetzt hab ich's gerafft. :)
Werde ich so oder so ähnlich umsetzen (mit _ als Vorgabe), super Idee! :allright:

Gruß, Little John
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

Werde ich so oder so ähnlich umsetzen (mit _ als Vorgabe), super Idee!
Da sagt man Danke. So wird das Plugin für mich wieder interessant. Ich bin gespannt.
Optimismus ist ein Mangel an Information.
Little John

Beitrag von Little John »

Ich habe es jetzt so implementiert, dass man in seinen Quelltext nur eine Preprozessor-Direktive zu schreiben braucht. Enweder

Code: Alles auswählen

MultiLine on
um den _ als Standard zu verwenden, oder

Code: Alles auswählen

MultiLine = myString
für einen benutzerdefinierten String.

Ich hoffe (und glaube), dass auch mit nur 1 Direktive die nötige Klarheit gegeben ist. Groß-/Kleinschreibung wird nicht berücksichtigt. Das ließe sich natürlich leicht ändern, aber da es bei Basic allgemein nicht üblich ist, habe ich es hier auch so gemacht. Es gibt jetzt zwei Demoprogramme.
Viel Spaß beim Ausprobieren. :)

Gruß, Little John
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

Danke. So werd ich das gerne nutzen.

Kann mir jemand noch helfen, das unter jaPBe zum Laufen zu bringen. Ich kenne mich da überhaupt nicht aus.
Optimismus ist ein Mangel an Information.
Antworten