PUBLIC PRIVATE STATIC LOCAL wie benutze ich was am besten?
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
PUBLIC PRIVATE STATIC LOCAL wie benutze ich was am besten?
Hi,
so, ich mache mal einen neuen Thread auf, damit wir nicht wieder durcheinanderkommen.
Mich würde jetzt einmal folgendes interessieren:
1) Was benutze ich wann/wann nicht und warum, mit welchen Vor und Nachteilen
a) Variablen
PUBLIC
PRIVATE
STATIC
LOCAL
b) Funktionen
STATIC
LOCAL
c) Arrays (was es dazu zu sagen gibt)
Was kann sich warum/wie/wann gefährlich auswirken?
(Ich denke immer wieder an das Beispiel von Hubert, bzw. der Makrovars, die er in locale umgewandelt hat, die dann sehr viel schneller waren)
PS: Wenn jemanden noch etwas einfaällt, dann kann er es ja hier anbringen. Das war jetzt nur der Anfang, der mir adhoc in den Sinn kam.
PPS: Noch etwas: Wenn das Probleme bringt, wie könnte ich sie dann umgehen, bzw. was könnte dann stattdessen besser, oder anders gemacht werden?
so, ich mache mal einen neuen Thread auf, damit wir nicht wieder durcheinanderkommen.
Mich würde jetzt einmal folgendes interessieren:
1) Was benutze ich wann/wann nicht und warum, mit welchen Vor und Nachteilen
a) Variablen
PUBLIC
PRIVATE
STATIC
LOCAL
b) Funktionen
STATIC
LOCAL
c) Arrays (was es dazu zu sagen gibt)
Was kann sich warum/wie/wann gefährlich auswirken?
(Ich denke immer wieder an das Beispiel von Hubert, bzw. der Makrovars, die er in locale umgewandelt hat, die dann sehr viel schneller waren)
PS: Wenn jemanden noch etwas einfaällt, dann kann er es ja hier anbringen. Das war jetzt nur der Anfang, der mir adhoc in den Sinn kam.
PPS: Noch etwas: Wenn das Probleme bringt, wie könnte ich sie dann umgehen, bzw. was könnte dann stattdessen besser, oder anders gemacht werden?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Gute Frage, Manfred!
Also zu den Variablen meint ein Kollege in unserer XUG, man soll überhaupt keine PUBLIC und PRIVATE mehr verwenden.
Und er tut es auch, es muss also gehen.
Aber umgesetzt habe ich's noch nicht, kann es also noch nicht erläutern.
Bei der Umstellung meiner CLIPPER-Apps in Hybrid-Modus hätte ich nicht drauf verzichten können, da braucht's ganz andere Grundkonzepte.
Also zu den Variablen meint ein Kollege in unserer XUG, man soll überhaupt keine PUBLIC und PRIVATE mehr verwenden.
Und er tut es auch, es muss also gehen.
Aber umgesetzt habe ich's noch nicht, kann es also noch nicht erläutern.
Bei der Umstellung meiner CLIPPER-Apps in Hybrid-Modus hätte ich nicht drauf verzichten können, da braucht's ganz andere Grundkonzepte.
Zuletzt geändert von Daniel am Di, 10. Okt 2006 10:48, insgesamt 1-mal geändert.
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Daniel,
das ist klar. Ich hatte auch mal vor Jahren einen Mailaustausch mit Hannes Ziegler, in dem er mir erklärte, warum man Public und Privat benutzen kann und evtl. auch soll. Ich habe in meinen Programmen überhaupt keine Public Vars mehr.
Es gibt aber anscheinend auch Tricks, wie man Private Variablen umgehen kann, aber die habe ich noch nicht verstanden. Jimmy hat in einem Thread darüber berichtet. Deshalb habe/hatte ich ja die Hoffnung solche Dinge einmal hier zu bereden und Tipps und Tricks von den anderen zu bekommen.
Allein schon das Wissen, warum welche Art sich wie im Speicher verhält und dementsprechend für Tempogewinn, oder Tempoverlust sorgt, dass ist schon Gold wert. Da gibt es auch diverse Dinge, die zu beachten sind. Aber leider habe ich davon noch keine Ahnung, bzw.arbeitet mich langsam dahin.
das ist klar. Ich hatte auch mal vor Jahren einen Mailaustausch mit Hannes Ziegler, in dem er mir erklärte, warum man Public und Privat benutzen kann und evtl. auch soll. Ich habe in meinen Programmen überhaupt keine Public Vars mehr.
Es gibt aber anscheinend auch Tricks, wie man Private Variablen umgehen kann, aber die habe ich noch nicht verstanden. Jimmy hat in einem Thread darüber berichtet. Deshalb habe/hatte ich ja die Hoffnung solche Dinge einmal hier zu bereden und Tipps und Tricks von den anderen zu bekommen.
Allein schon das Wissen, warum welche Art sich wie im Speicher verhält und dementsprechend für Tempogewinn, oder Tempoverlust sorgt, dass ist schon Gold wert. Da gibt es auch diverse Dinge, die zu beachten sind. Aber leider habe ich davon noch keine Ahnung, bzw.arbeitet mich langsam dahin.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Ich selber bin gerade dabei eine meiner wichtigsten Anwendungen nach Privates zu durchforsten, die rausfliegen können. Das liegt einfach am Programmierstil, ich habe immer sehr viel mit Variablen in Codeblöcken gearbeitet, und die machen das als Local eben nicht mit (teiweise musste ich bei diesem Prozedere sogar Publics einsetzen!). Zwar wurde dadurch der Code sehr kompakt und übersichtlich, aber die Privates setzten sich eben auch ständig im Speicher fest bzw. mussten zum Modulende händisch "gelöscht" werden. Soweit das eben überhaupt geht.
Einige wenige Publics setze ich noch immer ein. Das sind je nach Anwendung zwischen etwa 2 und 5. Die werden beim Programmstart initialisiert, um global die Bildschirmgröße, die Programmversion, Vodergrund/Hintergrundfarben, oder ähnliche Sachen zur Verfügung zu stellen. Manches davon könnte man sicher auch in eine ini oder soetwas schreiben, damit habe ich mich aber noch nicht befasst, und ich denke die paar Privates werden nicht sonderlich stören.
Statics benutze ich garnicht, habe ich auch noch nie.
Static Functions habe ich noch nie benutzt. Es widerstrebt mir, ein und denselben Funktionsnamen mehrfach zu nutzen. Und nur in einem solchen Fall macht in meinen Augen eine Static Function überhaupt Sinn. Funktionen, die in mehreren Modulen aufgerufen werden landen bei mir in eigenständigen prg, die dann auch nur allgemein verwendete Funktionen beinhalten.
Übrigens: Ich arbeite grundsätzlich niemals mit Prozeduren, immer nur mit Funktionen. Gibt es nichts zum Zurückgeben kann man immer noch ein NIL eintragen. Aber sollte sich im Laufe der Entwicklung ein Rückgabewert erforderlich zeigen, dann muß ich nur das NIL ändern, nicht noch das Procedure zu Function (OK, Kleinigkeit, aber was soll ich mich mit dem Procedure-Function-hinundher abmühen. Ich mache es gerne einheitlich).
Jan
Einige wenige Publics setze ich noch immer ein. Das sind je nach Anwendung zwischen etwa 2 und 5. Die werden beim Programmstart initialisiert, um global die Bildschirmgröße, die Programmversion, Vodergrund/Hintergrundfarben, oder ähnliche Sachen zur Verfügung zu stellen. Manches davon könnte man sicher auch in eine ini oder soetwas schreiben, damit habe ich mich aber noch nicht befasst, und ich denke die paar Privates werden nicht sonderlich stören.
Statics benutze ich garnicht, habe ich auch noch nie.
Static Functions habe ich noch nie benutzt. Es widerstrebt mir, ein und denselben Funktionsnamen mehrfach zu nutzen. Und nur in einem solchen Fall macht in meinen Augen eine Static Function überhaupt Sinn. Funktionen, die in mehreren Modulen aufgerufen werden landen bei mir in eigenständigen prg, die dann auch nur allgemein verwendete Funktionen beinhalten.
Übrigens: Ich arbeite grundsätzlich niemals mit Prozeduren, immer nur mit Funktionen. Gibt es nichts zum Zurückgeben kann man immer noch ein NIL eintragen. Aber sollte sich im Laufe der Entwicklung ein Rückgabewert erforderlich zeigen, dann muß ich nur das NIL ändern, nicht noch das Procedure zu Function (OK, Kleinigkeit, aber was soll ich mich mit dem Procedure-Function-hinundher abmühen. Ich mache es gerne einheitlich).
Jan
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi,
ich versuche Systemparameter so früh wie möglich zu deklarieren und dann eben als max.Private. So sind sie auch dem Rest bekannt und müssen dennoch nicht Public sein.
Das mit den Static Functions habe ich wohl irgendwie falsch verstanden, oder falsch interpretiiert. Werde ich bei Gelegenheit auch wieder ändern und versuchen in Klassen einzubauen.
Mit Ini Dateien tue ich mich schwer, weil die halt von jedermann geändert werden können und dann "BUMM"
PS: Ach so, meine Programmparameter sind in einer Klasse und somit brauche ich dann nur das Objekt "sichtbar" zu machen. Also entfallen alle Variablen rundherum, weil sie ja im Objekt sind.
ich versuche Systemparameter so früh wie möglich zu deklarieren und dann eben als max.Private. So sind sie auch dem Rest bekannt und müssen dennoch nicht Public sein.
Das mit den Static Functions habe ich wohl irgendwie falsch verstanden, oder falsch interpretiiert. Werde ich bei Gelegenheit auch wieder ändern und versuchen in Klassen einzubauen.
Mit Ini Dateien tue ich mich schwer, weil die halt von jedermann geändert werden können und dann "BUMM"
PS: Ach so, meine Programmparameter sind in einer Klasse und somit brauche ich dann nur das Objekt "sichtbar" zu machen. Also entfallen alle Variablen rundherum, weil sie ja im Objekt sind.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Oje - das wird bestimmt wieder ein sehr "politischer" Thread
Manfred, gib es ruhig zu: Du willst den Aufstieg schneller schaffen
Ich persönlich schere mich nicht wirklich darum, ob eine Variable local, static, private oder public ist (außer bei Makros, wo es ja nicht anders geht).
In meinem Programm habe ich über 130 publics - also relativ viel.
Aber mein Programm ist eh' ein SDI-Programm und die Fenster sind immer modal - so mache ich mir das Leben recht einfach
Andere nutze nur eine Pbulic-Variable - nämlich ein Array, in dem sie alle Variablen als einzelne Elemente speichern.
Oder auch eine Klasse, die die globalen "Variablen" enthält und definierte Schnittstellen zum Auslesen und (sofern möglich) Ändern.
Was ich gerne mache, ist mit #define zu arbeiten - das erleichtert das Programmieren sehr!
Es ist viel übersichtlicher, MEMVAR->texte[ ort, spr_de ] := "Ort:" zu schreiben (und vor allem später auch wiederzufinden), als MEMVAR->texte[ 9, 1 ] := "Ort:"
Aber das wirst Du Dir ja dann am 28.10. genauer anschauen können
Viele Grüße,
Martin
Manfred, gib es ruhig zu: Du willst den Aufstieg schneller schaffen
Ich persönlich schere mich nicht wirklich darum, ob eine Variable local, static, private oder public ist (außer bei Makros, wo es ja nicht anders geht).
In meinem Programm habe ich über 130 publics - also relativ viel.
Aber mein Programm ist eh' ein SDI-Programm und die Fenster sind immer modal - so mache ich mir das Leben recht einfach
Andere nutze nur eine Pbulic-Variable - nämlich ein Array, in dem sie alle Variablen als einzelne Elemente speichern.
Oder auch eine Klasse, die die globalen "Variablen" enthält und definierte Schnittstellen zum Auslesen und (sofern möglich) Ändern.
Was ich gerne mache, ist mit #define zu arbeiten - das erleichtert das Programmieren sehr!
Es ist viel übersichtlicher, MEMVAR->texte[ ort, spr_de ] := "Ort:" zu schreiben (und vor allem später auch wiederzufinden), als MEMVAR->texte[ 9, 1 ] := "Ort:"
Aber das wirst Du Dir ja dann am 28.10. genauer anschauen können
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
politischer Thread? Nö, denke ich nicht, und wenn werde ich mich nicht beteiligen....
Aufstieg schneller schaffen? Viele Punkt in kurzer Zeit? Ist doch eh egal. Du bist nicht einzuholen, Hubert hat mich schon überholt und ansonsten belege ich einen sehr guten 3.Platz
Zu Publics-> ich denke die sind sehr gefährlich für die Stabilität eines Programmes und sehr speicherhungrig? Also ich weiß jetzt wirklich nicht mehr, was Sache ist. Der eine redet so, der andere so.
(Ich glaube am 4.11. muß Steffen mal gelöchert werden, das er jetzt mal ein Machtwort spricht, was es denn jetzt damit wirklich auf sich hat.)
Was welcher Typ nun macht im Programm, dass ist mir schon klar. Es geht wirklich nur darum, was ist vernünftig? Und was ist lahm und was ist sauschnell?
Wie sieht es mit Membervars aus, oder Methoden? Kann man eine Klasse damit bis zum Erbrechen vollpacken, oder gibt es hier Grenzen, die zu beachten sind?
politischer Thread? Nö, denke ich nicht, und wenn werde ich mich nicht beteiligen....
Aufstieg schneller schaffen? Viele Punkt in kurzer Zeit? Ist doch eh egal. Du bist nicht einzuholen, Hubert hat mich schon überholt und ansonsten belege ich einen sehr guten 3.Platz
Zu Publics-> ich denke die sind sehr gefährlich für die Stabilität eines Programmes und sehr speicherhungrig? Also ich weiß jetzt wirklich nicht mehr, was Sache ist. Der eine redet so, der andere so.
(Ich glaube am 4.11. muß Steffen mal gelöchert werden, das er jetzt mal ein Machtwort spricht, was es denn jetzt damit wirklich auf sich hat.)
Was welcher Typ nun macht im Programm, dass ist mir schon klar. Es geht wirklich nur darum, was ist vernünftig? Und was ist lahm und was ist sauschnell?
Wie sieht es mit Membervars aus, oder Methoden? Kann man eine Klasse damit bis zum Erbrechen vollpacken, oder gibt es hier Grenzen, die zu beachten sind?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
So schlimm finde ich das garnicht. Hauoptsache das wird keine Glaubensfrage sondern ein friedlicher Austausch der Meinungen und Erfahrungen. Ich freue mich hier mal zu sehen und zu diskutieren, wie andere Entwickler mit dem "Problem" umgehen. Auch wenn es nur so etwas banales ist wie Variablen Viele von uns sind ja noch lernfähig oder wissbegierig.Martin hat geschrieben:Oje - das wird bestimmt wieder ein sehr "politischer" Thread
Die Sache mit dem einen globalen Array finde ich z. B. ganz interessant. Allerdings macht das in meinen Augen auch alles wieder etwas unübersichtlicher, denn aVar[2, 4] ist etwas nichtssagender als nBildschirmBreite, wenn das irgendwo mitten im Code auftaucht.
Interessant wäre für mich, mal ein paar Beispiele zusehen. Denn ich muß ehrlich gestehen daß ich z. B. nicht den blassesten Schimmer habe wie ich das mit Klassen realisieren sollte. Und damit erschließt sich der Sinn der Sache auch nicht wirklich.
Jan
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
Und Geschwindigkeit: in erster Linie reden wir von Datenbankanwendungen, also Datenerfassung! Das langwierigste daran ist die Dateneingabe (das Tippen) - und ob der User beim Wechseln eines Datensatzes 1/10 Sekunde länger warten muss, ist ihm auch egal.
Viele Grüße,
Martin
das war im übertragenen Sinne gemeint! Politische Diskussionen ufern meist aus - und so ist es mit Deinen Threads auch häufiger - insofern "politisch"Manfred hat geschrieben:politischer Thread? Nö, denke ich nicht, und wenn werde ich mich nicht beteiligen....
Na klar bin ich einzuholen - und Hubert, Tom und ich zählen eh' nicht. Solange wir Moderatoren (bzw. Administrator) sind, ändert sich unsere Kategorie nicht...Manfred hat geschrieben:Aufstieg schneller schaffen? Viele Punkt in kurzer Zeit? Ist doch eh egal. Du bist nicht einzuholen, Hubert hat mich schon überholt und ansonsten belege ich einen sehr guten 3.Platz
Sind sie ja auch - aber wenn man kein verteiltes Arbeiten (parallele Threads, mehrere Fenster parallel,...) hat, kann nicht viel passieren.Manfred hat geschrieben:Zu Publics-> ich denke die sind sehr gefährlich für die Stabilität eines Programmes und sehr speicherhungrig? Also ich weiß jetzt wirklich nicht mehr, was Sache ist. Der eine redet so, der andere so.
Und Geschwindigkeit: in erster Linie reden wir von Datenbankanwendungen, also Datenerfassung! Das langwierigste daran ist die Dateneingabe (das Tippen) - und ob der User beim Wechseln eines Datensatzes 1/10 Sekunde länger warten muss, ist ihm auch egal.
Darum machen wir das Treffen ja auch in erster Linie...Manfred hat geschrieben:(Ich glaube am 4.11. muß Steffen mal gelöchert werden, das er jetzt mal ein Machtwort spricht, was es denn jetzt damit wirklich auf sich hat.)
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jan,
Viele Grüße,
Martin
genau - und darum arbeite ich gerne mit #define. Da kannst Du dann aVar[ Bildschirm, Breite] schreiben...Jan hat geschrieben:Allerdings macht das in meinen Augen auch alles wieder etwas unübersichtlicher, denn aVar[2, 4] ist etwas nichtssagender als nBildschirmBreite, wenn das irgendwo mitten im Code auftaucht.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Hallo Martin,
ja, das hatte ich auch schon so verstanden. Dann wiederum muß ich aber in jede prog vorneeweg ein Bündel an #defines setzen. Das ist eine reine Gefühlssache, aber sowetwas habe ich schon zu Clipperzeiten nie gemocht. Ich habe noch nicht einmal includes benutzt, sondern immer die wahren Werte eingetragen (auch wenn das dann wiederum unübersichtlicher war).
Du siehst, da spielt eine Menge irrationales gefühlsmäßiges Denken mit. Von daher war Dein Einwand der politischen Diskussion sicher gerechtfertigt. Solange wir uns hier nicht um die "richtigen" Gefühle kloppen ...
Der Spruch von Manfred ist da sicher begrüßenswert über die Diskussion mit Steffen. Das wird sicher einiges auf ein solideres Fundament stellen. Aber ich bin mir sicher: Auch danach wird noch immer so einiges Glaubens- oder Gewohnheitsfrage bleiben.
Jan
ja, das hatte ich auch schon so verstanden. Dann wiederum muß ich aber in jede prog vorneeweg ein Bündel an #defines setzen. Das ist eine reine Gefühlssache, aber sowetwas habe ich schon zu Clipperzeiten nie gemocht. Ich habe noch nicht einmal includes benutzt, sondern immer die wahren Werte eingetragen (auch wenn das dann wiederum unübersichtlicher war).
Du siehst, da spielt eine Menge irrationales gefühlsmäßiges Denken mit. Von daher war Dein Einwand der politischen Diskussion sicher gerechtfertigt. Solange wir uns hier nicht um die "richtigen" Gefühle kloppen ...
Der Spruch von Manfred ist da sicher begrüßenswert über die Diskussion mit Steffen. Das wird sicher einiges auf ein solideres Fundament stellen. Aber ich bin mir sicher: Auch danach wird noch immer so einiges Glaubens- oder Gewohnheitsfrage bleiben.
Jan
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin, Jan,
Glaube, oder Gewohnheit. Ist mir alles Wurscht. (hier jedenfalls )
Wenn mir jemand die Hand auflegt und sagt: "Mein Sohn, Du bist geheilt", dann ist mir das sch........, Hauptsache ist, ich bin geheilt. Und wenn 1000 Leute kommen und sagen, ohne Medizin kann das gar nicht klappen. (Placebo Effekt)
Wenn mir Beispiele gebracht werden, die mir zeigen, dass ich auf dem Holzweg bin und der andere Weg besser, schneller, oder sonstirgendwie von Vorteil ist, dann werde ich das versuchen.
Ich habe z.B. in meinen alten Clipperprogrammen viele Parameter, oder sonstwas über #define geregelt. Für mich war das nachher zu unübersichtlich. Jetzt erstelle ich eine Klasse mit den entsprechenden Var-Namen und leite sie ab. Mir persönlich gefällt es jetzt besser und ich komme damit hervorragend klar.
@Jan,
Dein Problem, sowas über eine Klasse zu regeln, kan ich jetzt im Moment nicht nachvollziehen. Kläre mich doch mal kurz auf, was Du meinst.
Das mit dem Array, so wie Du es gerade beschrieben hast, ist klar. Mit Array[1,1] oder so ist kein Blumentopf zu gewinnen. Die Zahlen kann man über #define in Namen umwandeln und dann ist es auch einfacher.
#define feldbreite 1
Also z.B. array[1,feldbreite], oder so
PS:sorry, Martin, hattest Du schon erklärt. Wer lesen kann ist klar im Vorteil
Glaube, oder Gewohnheit. Ist mir alles Wurscht. (hier jedenfalls )
Wenn mir jemand die Hand auflegt und sagt: "Mein Sohn, Du bist geheilt", dann ist mir das sch........, Hauptsache ist, ich bin geheilt. Und wenn 1000 Leute kommen und sagen, ohne Medizin kann das gar nicht klappen. (Placebo Effekt)
Wenn mir Beispiele gebracht werden, die mir zeigen, dass ich auf dem Holzweg bin und der andere Weg besser, schneller, oder sonstirgendwie von Vorteil ist, dann werde ich das versuchen.
Ich habe z.B. in meinen alten Clipperprogrammen viele Parameter, oder sonstwas über #define geregelt. Für mich war das nachher zu unübersichtlich. Jetzt erstelle ich eine Klasse mit den entsprechenden Var-Namen und leite sie ab. Mir persönlich gefällt es jetzt besser und ich komme damit hervorragend klar.
@Jan,
Dein Problem, sowas über eine Klasse zu regeln, kan ich jetzt im Moment nicht nachvollziehen. Kläre mich doch mal kurz auf, was Du meinst.
Das mit dem Array, so wie Du es gerade beschrieben hast, ist klar. Mit Array[1,1] oder so ist kein Blumentopf zu gewinnen. Die Zahlen kann man über #define in Namen umwandeln und dann ist es auch einfacher.
#define feldbreite 1
Also z.B. array[1,feldbreite], oder so
PS:sorry, Martin, hattest Du schon erklärt. Wer lesen kann ist klar im Vorteil
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Was ich meine ist: Keine Ahnung wie ich soetwas über eine Klasse regeln soll.Manfred hat geschrieben:Dein Problem, sowas über eine Klasse zu regeln, kan ich jetzt im Moment nicht nachvollziehen. Kläre mich doch mal kurz auf, was Du meinst.
Abgesehen davon ist Gewohnheit garnicht so egal. Denn in der Software-Entwicklungen führen eben doch manchmal mehrere Wege nach Rom. Und wenn einer sagt, meine paar Publics stören nicht, ein anderer das über ein Array macht, der dritte über eine Klasse: Dann haben eben alle drei recht. Dann ist es wirklich eine Glaubens-, Gewohnheits- oder Bauchfrage. Bei der keiner unrecht hat. Außer es gibt Probleme Geschwindigkeitsmäßig oder einen Crash. Oder Bandwurmcode, wo keiner mehr durchsteigt, was aber eben auch wieder nur unproduktiv, nicht aber falsch ist.
Jan
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jan,
Viele Grüße,
Martin
ganz im Gegenteil, es ist sogar genau richtig - zumindest, wenn man sich seinen Arbeitsplatz sichern willJan hat geschrieben:Oder Bandwurmcode, wo keiner mehr durchsteigt, was aber eben auch wieder nur unproduktiv, nicht aber falsch ist.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Jan,
hm, das sind alles Dinge, die kann ich bei unserem Treffen mal zeigen. Ich bringe alles mit und führe es einmal vor. Ich schätze dass es bestimmt ein paar andere Meinungen zu meinen Lösungen gibt, die sicherlich interessant sein werden.
Das Problem ist eben noch, dass hier nicht unendlich viel Code veröffentlicht werden kann in einem Rutsch und außerdem finde ich es besser, wenn man sofort mündlich dazu Stellung nehmen kann, weil dann schriftliche Mißverständnisse vermieden werden können.
Aber hier ganz kurz.
Hilft Dir das vielleicht weiter?
hm, das sind alles Dinge, die kann ich bei unserem Treffen mal zeigen. Ich bringe alles mit und führe es einmal vor. Ich schätze dass es bestimmt ein paar andere Meinungen zu meinen Lösungen gibt, die sicherlich interessant sein werden.
Das Problem ist eben noch, dass hier nicht unendlich viel Code veröffentlicht werden kann in einem Rutsch und außerdem finde ich es besser, wenn man sofort mündlich dazu Stellung nehmen kann, weil dann schriftliche Mißverständnisse vermieden werden können.
Aber hier ganz kurz.
Code: Alles auswählen
PROCEDURE main()
Class prgpara FROM datenbank
VAR cBelegart,;
nBelegNr
METHOD initvaria
ENDCLASS
**************************
METHOD prgpara
cBelegart := "test"
nBelegNr := 0
RETURN self
************************************************************
oPrgPara := prgpara():new():initvaria()
@ 5, 1 SAY oPrgPara:cBelegart
@ 6, 1 SAY ++oPrgPara:nBelegNr
RETURN
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Hallo Martin,
so einer bist Du also! Hast Du auch Deine Abfrage auf dem Server, mind. wöchentlich aufzurufen, sonst kommt Komplettformatierung?
Aber ehrlich: Bandwurmcode ist schon falsch. Und kann mich auch meinen Job kosten. Wenn ich nämlich nach einem halben Jahr selber nicht mehr durchsteige was ich da verzapft habe, und dann drei mal so lange brauche für Umarbeiten als eigentlich notwendig. Profilieren kann ich mich doch am besten, wenn ich 5 Minuten nach Auftrag durch Chef das Update anmelden kann mit dem Gefühl: Ach, was bin ich doch genial!
Jan
so einer bist Du also! Hast Du auch Deine Abfrage auf dem Server, mind. wöchentlich aufzurufen, sonst kommt Komplettformatierung?
Aber ehrlich: Bandwurmcode ist schon falsch. Und kann mich auch meinen Job kosten. Wenn ich nämlich nach einem halben Jahr selber nicht mehr durchsteige was ich da verzapft habe, und dann drei mal so lange brauche für Umarbeiten als eigentlich notwendig. Profilieren kann ich mich doch am besten, wenn ich 5 Minuten nach Auftrag durch Chef das Update anmelden kann mit dem Gefühl: Ach, was bin ich doch genial!
Jan
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jan,
nein - keine Sorge, so einer bin ich nicht.
Aber was den letzten Teil Deines Postings anbelangt: mach Dir da mal keine Hoffnungen! Dein Chef sieht das nicht so, wie Du. Der denkt sich: Wenn der nach fünf Minuten fertig ist, dann fahre ich doch billiger, wenn ich ihn Auftragsarbeiten machen lassen, statt ihn fest anzustellen (oder so ähnlich).
Vieel Grüße,
Martin
nein - keine Sorge, so einer bin ich nicht.
Aber was den letzten Teil Deines Postings anbelangt: mach Dir da mal keine Hoffnungen! Dein Chef sieht das nicht so, wie Du. Der denkt sich: Wenn der nach fünf Minuten fertig ist, dann fahre ich doch billiger, wenn ich ihn Auftragsarbeiten machen lassen, statt ihn fest anzustellen (oder so ähnlich).
Vieel Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi,
ich wollte es gerade nicht loslassen, aber ich bin der Meinung, man sollte wissen, wie schnell es geht, dabei aber eine ernste Miene machen und erklären was es für ein Aufwand ist, sich ins geheime Kämmerlein verzischen, dort kurz loslegen und den Rest des Tages dann alle 5e von sich strecken.
ich wollte es gerade nicht loslassen, aber ich bin der Meinung, man sollte wissen, wie schnell es geht, dabei aber eine ernste Miene machen und erklären was es für ein Aufwand ist, sich ins geheime Kämmerlein verzischen, dort kurz loslegen und den Rest des Tages dann alle 5e von sich strecken.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
boh ey,
wir schweifen schon wieder ab....
wir schweifen schon wieder ab....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Josef Stockinger
- UDF-Programmierer
- Beiträge: 53
- Registriert: So, 25. Sep 2005 18:06
- Wohnort: Nähe Regensburg
- Kontaktdaten:
Warum, geht doch auch so:Jan hat geschrieben:Martin hat geschrieben:Allerdings macht das in meinen Augen auch alles wieder etwas unübersichtlicher, denn aVar[2, 4] ist etwas nichtssagender als nBildschirmBreite, wenn das irgendwo mitten im Code auftaucht.Jan
Code: Alles auswählen
#define nBreit aPublic[01]
#define nHoch aPublic[02]
usw..
Code: Alles auswählen
PROCEDURE Main()
PUBLIC aPublic[20] // oder halt die entsprechenden Zahlen
Auf diesem Weg benutze ich in meinem Hauptprogramm nahezu 1000 LOCAL-Variablen ohne Probleme. Dazu passend habe ich mir eine Verwaltung angelegt, mit der beim Erweitern oder rausnehmen von Variablen automatisch die Nummerierung geprüft und das verwendete Include-File neu geschrieben wird.
Dann wird diese Deklarierung gleichzeitig zur typgerechten Datenübergabe an List&Label benutzt. Das ist übrigens mein Beitrag bei der XUG-Regensburg am 20.Oktober. Könnte schon interessant sein.
Ich sehe keinen Grund, weshalb sich das nicht auf PUBLICs übertragen lassen könnte, habs bisher nur nicht so gemacht, erst diese Diskussion bringt mich drauf. Wenns Sinn macht, bau ich meinen unzähligen PUBLIC mal auf diese Art ein. Ich habe allerdings bisher keine Probleme festgestellt.
Gruß
Josef
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Hallo Josef,
ja, das war ja auch der Ansatz von Martin.
im Prinzip bin ich damit auch einverstanden, die Idee finde ich auch wirklich sehr gut. Ich muß halt nur am Anfang jeder prg die ganzen #define's auflisten, und damit habe ich ein persönliches, rein gefühlsmäßiges Problem.
Ich muß aber auch gestehen, daß ich manche Probleme von Euch nicht habe, weil ich keine 3thrd-Party-Produkte verwende. Auch kein L&L, eXpress, oder sonstwas. Was wie gesagt einige Eurer Probleme für mich ausklammert, aber natürlich auch andere schafft, wenn ich das alles irgendwie zu Fuß programmieren muß ohne Hilfsmittel.
Jan
ja, das war ja auch der Ansatz von Martin.
im Prinzip bin ich damit auch einverstanden, die Idee finde ich auch wirklich sehr gut. Ich muß halt nur am Anfang jeder prg die ganzen #define's auflisten, und damit habe ich ein persönliches, rein gefühlsmäßiges Problem.
Ich muß aber auch gestehen, daß ich manche Probleme von Euch nicht habe, weil ich keine 3thrd-Party-Produkte verwende. Auch kein L&L, eXpress, oder sonstwas. Was wie gesagt einige Eurer Probleme für mich ausklammert, aber natürlich auch andere schafft, wenn ich das alles irgendwie zu Fuß programmieren muß ohne Hilfsmittel.
Jan
Hi ManfredManfred hat geschrieben: Zu Publics-> ich denke die sind sehr gefährlich für die Stabilität eines Programmes und sehr speicherhungrig?
Also ich weiß jetzt wirklich nicht mehr, was Sache ist. Der eine redet so, der andere so.
wieso sollen Public speicherhungriger sein als Private
und wieso gefährlicher als diese?
So lange ich drei oder vier verschachtelte Functions habe, kann ich Private Vars überall benützen, Local muss ich alle übergeben, das kann ellenlange Parameterlisten geben.
Wenn's aber noch mehr Functions werden, die sich alle dieselben Private Vars teilen, dann kann es unübersichtlich werden.
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Daniel,
wenn ich das mal so genau beantworten könnte.
Es ist eine Frage, wie die Public, Private usw. im Speicher verwaltet werden. Auf jeden Fall sind Locale Vars immer schneller als Public, oder Private. Deswegen habe ich ja den Thread hier eröffnet, um das zu klären. Aber ich vermute, richtige Infos werden erst am 4.11. zu Tage kommen. Wie gesagt, da werde ich mal jemanden versuchen zu löchern.
Ich glaube ich mache mir schon mal eine Liste mit Fragen
wenn ich das mal so genau beantworten könnte.
Es ist eine Frage, wie die Public, Private usw. im Speicher verwaltet werden. Auf jeden Fall sind Locale Vars immer schneller als Public, oder Private. Deswegen habe ich ja den Thread hier eröffnet, um das zu klären. Aber ich vermute, richtige Infos werden erst am 4.11. zu Tage kommen. Wie gesagt, da werde ich mal jemanden versuchen zu löchern.
Ich glaube ich mache mir schon mal eine Liste mit Fragen
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!