Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#25

Re: Globale Variablen und OOP

  Alt 23. Jan 2007, 12:04
Zitat von Hansa:
Inwiefern pauschal ?
Ich bezog mich auf:

Zitat von Hansa:
Wer bei so einer trivialen Geschichte noch immer was verkehrt macht, der soll besser nicht anfangen zu programmieren. Oder er soll sein Programm mit überflüssigem DAP-SchnickSchnack zumüllen.
Zitat von Hansa:
Ich habe ein Beispiel genannt, wo ausnahmsweise eine globale Variable effektiver ist, als was anderes, ohne sich selber unnötig zu strangulieren. Ich betone nochmals : ausnahmsweise.
Ja, aber das Problem an Ausnahmen ist, dass man sie als solche kennen muss. Gibt es ein Regelwerk (z.B. für Codestil), dann wird es sicherlich auch schnell die eine oder andere Stelle geben, an der sich einer sagt XYZ ist aber effektiver, machen wir mal 'ne Ausnahme. Typisches Beispiel dafür wäre für mich die Qualifikation von Instanz-Variablen mit self oder eben das begin und end hinter jedem if .. then (auch bei nur einem Befehl in diesem Block). Natürlich wird nicht jeder das für seinen Codestil verlangen, aber da wo etwas zu den Regeln gehört, hat sich (hoffentlich) jmd. etwas dabei gedacht.
Natürlich kann ich jetzt hier für die INI-Datei eine Ausnahme machen, aber es bleibt nunmal eine Ausnahme und ist damit inkosequent. Mag auch sein, dass Du nie jmd. triffst, der an dieser Stelle aufschlagen wird. Das Problem ist aber, dass wenn jmd. (aus welchen Gründen auch immer!) hier etwas falsch macht, dies auch unerwünschte Konsequenzen haben dürfte. Nimm z.B. eine Funktion, die diese Variable als var-Parameter bekommt. Schaust Du dir nur die Argumente an, kannst Du leicht übersehen, dass der eine Parameter verändert wird. Vielleicht geht es auch 10 mal gut (der Wert wird eben nur bedingt verändert) und dann beim Kunden kracht's. Da wäre dann die Frage ob das ein nötiger Fehler ist. Hätte man (z.B.) eine Funktion, so würde hier der Compiler deutlich darauf hinweisen, dass diese nicht als var-Parameter verwendet werden kann.


Zitat von Hansa:
Ich brauche sie projekweit. Wenn es irgendwie geht, dann gilt immer : die Sichtbarkeit niedrig zu halten. Auch schon gesagt. Und wenn sich einer nicht an die Vorgaben hält, wie in meinem Beispiel zwar möglich, eine nicht zu verändernde Variable eben doch zu verändern, dann ist er selber Schuld und auch für die Konsequenzen verantwortlich. Muß ein Programm erst Programmierer-sicher gemacht werden, tja dann siehts in der Tat schlecht aus.
Na ja, das finde ich klingt doch etwas paradox. Immerhin sagst Du ja auch, wenn es irgendwie geht, dann Sichtbarkeit niedrig halten (hier sogar ohne große Verrenkung, wir reden von 5 Zeilen, Signatur * 2, begin und end sowie result := ...).
Natürlich ist jeder selbst schuld, der sich nicht an Vereinbarungen hält, aber dass dieser jmd. die Konsequenzen trägt, hm, sehe ich anders. Also bei meinem Arbeitgeber hätten die meisten das Glück, dass ihr Chef die Verantwortung für die Programme übernimmt. Natürlich ist es deshalb auch im Interesse dieser Verantwortlichen, dass dann solche Dinge vermieden werden. Und da wären wir dann (meiner Erfahrung nach zumindest) bei Konsequenz. Wenn ich jmd. bestimmte Dinge vorschreibe, dann möchte ich eine konsequente Umsetzung sehen. Die kann ich aber nur schwer einfordern/rechtfertigen wenn meine Programme, dort wo ich es für sinnvoll halte, Ausnahmen machen. Dann wird sich doch jeder dem ich da etwas vorschreibe etwas verar... vorkommen und ebenfalls selbstständig solche Entscheidungen treffen.

Ich kann hier wirklich nur aus eigener Erfahrung sprechen, dass man jedes Programm tunlichst Programmierer sicher machen sollte. Ich meine jeder kennt Fehler in irgendwelchen größeren Programmen, nehmen wir doch klassisch den Blue-Screen oder so. Wie kommen die denn wohl ins Programm? Ich denke da dürften doch die Programmierer für verantwortlich sein.
Natürlich kann man bestimmte Ausnahmen machen und dies auch klar als solche Kennzeichnen und dann halt sagen, wer das nicht berücksichtigt ist selber schuld, nur zweifel ich an ob das klug wäre. Ich habe zumindestens schon Leute erlebt, die es nicht geschafft haben erst zu lesen und dann zu programmieren. Da wurden dann z.B. null Byte aus einem Puffer gelesen und es wurde sich gewundert, dass dabei nichts in einer Variable geschrieben wurde (und die tatsächliche Anzahl von gelesenen Bytes auch null war). Das lag nicht an fehlender Dokumentation, sondern an der falschen Verwendung einer Variable (bzw. genauer eines Parameter).

Deswegen denke ich, man sollte nicht davon ausgehen, dass kein Programmierer Fehler macht, da kommt es genauso häufig vor (vielleicht sogar häufiger) wie auch an anderer Stelle. Gerade die Möglichkeit des Debuggers (wir laufen mal in den Fehler und schauen dann was falsch ist) haben einen gewissen Einfluss auf einige (ich behaupte mal unerfahrenere) Menschen. Und da es sicherlich immer ein paar Leute geben wird, die noch etwas unerfahren sind und ich diesen Personen keineswegs das Programmieren verbieten bzw. das Aufhören damit empfehlen möchte, denke ich ist es ein besserer Weg Programme so "programmierersicher" wie möglich zu machen (letztlich machen auch die Erfahrenen mal etwas falsch und merken es dann rechtzeitig!).
Fehler kosten einen einfach immer mehr als jede Verrenkung, so unschön Letztere auch sind (und einen schlechten Ruf bekommt man nicht all zu leicht weg, eine Verrenkung im Code schon).
  Mit Zitat antworten Zitat