Wieso "const" verwenden?



  • Nabend,

    ich frage mich immer mehr, wieso sollte man das Schlüsselwort "const" verwenden? Ist es nicht sinnlos? Ich meine, wenn ein Programmierer nicht will, dass sich ein Wert nicht ändert, lässt er/sie eben die Finger davon, oder nicht?
    Oder gibt es wirklich Anwendungsgebiete in denen man wirklich nicht oder nur schwer auf const verzichten kann?

    Danke,
    Gruß
    Squall



  • optimierung geb ich mal als Stichwort rein ...



  • (D)Evil schrieb:

    optimierung geb ich mal als Stichwort rein ...

    Durch const werden Programme nicht schneller.



  • Legst du im Auto den Sicherheitsgurt an? Wenn ja, warum?



  • es hat auch einen gedanklichen weg:

    ich schau mir das programm an und ich muss darüber nachdenken: ahaaa genau das ist eine const variable deswegen war das so und so.....

    weiters bringt const den vorteil, dass die angst weg ist, sie evtl verändern zu können.

    Und wenn du für jemanden Code dokumentierst, macht const das natürlich klarer. Also es bringt auch Verständnisvorteile.

    Soviel aus der Gedankensicht



  • Squall schrieb:

    Ich meine, wenn ein Programmierer nicht will, dass sich ein Wert nicht ändert, lässt er/sie eben die Finger davon, oder nicht?

    genau, und der 5. oder 6. Programmierer eines Teams weiß von diesem undokumentierten Bezeichner nix und schon ists passiert - da kannste dann lange suchen ^^

    oder programmierer x schreibt nen framework, x verlässt die firma, bevor es dokumentiert werden kann, y+z nutzen es, müssen sich aber erstmal durch den code wühlen... alles zeitfaktoren ^^



  • Squall schrieb:

    Nabend,

    ich frage mich immer mehr, wieso sollte man das Schlüsselwort "const" verwenden? Ist es nicht sinnlos? Ich meine, wenn ein Programmierer nicht will, dass sich ein Wert nicht ändert, lässt er/sie eben die Finger davon, oder nicht?
    Oder gibt es wirklich Anwendungsgebiete in denen man wirklich nicht oder nur schwer auf const verzichten kann?

    Danke,
    Gruß
    Squall

    Naja, das "lässt er die Finger davon" ist ein wenig ungeschickt. Es arbeitet wahrscheinlich nicht nur ein Programmierer an einen Projekt oder der Coder wird als Lib verwendet, dann gibt es keinen Grund, warum jemand auf einen Wert Zugriff hat, mit dem er überhaupt nichts anfangen kann/darf.
    So können Fehler schon mal vermieden werden.



  • Okay, das ist natürlich ein gutes Argument. Ich lerne C/C++ ja noch und bin da noch nicht auf die Hilfe / Mitarbeit anderer angewiesen. 😃

    Danke,
    Gruß
    Squall



  • Trotzdem solltest du dir angewöhnen const-korrekten Code zu schreiben. Denn auch wenn nur du an einem Programm arbeitest, weißt du in 3 wochen vielleicht nichtmehr, dass du eine Variable heute konstant lassen wolltest und änderst sie dann doch... Const ist ein Konstrukt das dem Menschen hilft, besseren (vor allem sichereren) Code zu schreiben, und der Compiler unterstützt uns dabei, indem er meert wenn wir ein const objekt aus versehn ändern wollen.





  • Bashar schrieb:

    Nachteile von const:
    http://c2.com/cgi/wiki?AvoidConstCompletely

    Das ist aber POV und nicht technisch, bzw. einfach falsch, z.B. was „helping the compiler“ angeht.



  • Das ist ein Wiki.



  • Naja... Ich würd sagen const ist erst wirklich nötig geworden durch die Referenzen. Ich übergebe nunmal viele Werte per Referenz, damit es schneller geht, aber um sicher zu stellen, dass ich den Wert nur übergeben und er nicht verändert wird, nehme ich halt const.

    Und das ist dann gut für die Sicherheit und die Lesbarkeit.
    Mit Referenz verbindet man doch erstmal:
    "Die Variable wird verändert",

    dabei verbindet man mit Referenz + Const:
    "Die Variable wird nur übergeben und nicht verändert"



  • Bashar schrieb:

    Das ist ein Wiki.

    Hmm ja, aber wieso hast Du es kommentarlos gepostet? Ich befürchte einfach, dass es den OP verwirren könnte, weil es dem bisher gesagten direkt widerspricht.



  • Ist doch eine gute Sache. Es werden mögliche Nachteile von const erwähnt und es steht jeweils eine kurze aber aussagekräftige Diskussion dazu dabei. So kann sich jeder seine Meinung bilden und muß sich nicht auf das kollektive "const ist toll" verlassen.



  • Konrad Rudolph schrieb:

    Hmm ja, aber wieso hast Du es kommentarlos gepostet? Ich befürchte einfach, dass es den OP verwirren könnte, weil es dem bisher gesagten direkt widerspricht.

    Sind wir hier in der Kirche oder so? Genau deshalb hab ich es doch gepostet.



  • Bashar schrieb:

    Konrad Rudolph schrieb:

    Hmm ja, aber wieso hast Du es kommentarlos gepostet? Ich befürchte einfach, dass es den OP verwirren könnte, weil es dem bisher gesagten direkt widerspricht.

    Sind wir hier in der Kirche oder so? Genau deshalb hab ich es doch gepostet.

    Gut, ich gebe auf. Mich hat bloß der Titel des Eintrags total aus dem Ruder geworfen. Nach dem Titel erwartet jemand, der mit diesem Wiki nicht vertraut ist, nicht, dass der Titel in Wahrheit lauten müsste „Whether or not to avoid const“.



  • ........... schrieb:

    (D)Evil schrieb:

    optimierung geb ich mal als Stichwort rein ...

    Durch const werden Programme nicht schneller.

    Oh doch, und wie. "const" ist fuer den Compiler eine unglaublich Grosse Hilfe bei Geschwindigkeitsoptimierungen. Ich hab schon Anwendungsfaelle gehabt, wo die Geschwindigkeit _MERKLICH_ (read: ~50%) gestiegen ist, nachdem ich im ganzen Programm wie wild alles "const" gemacht hab was nur ging.



  • Bashar schrieb:

    http://c2.com/cgi/wiki?AvoidConstCompletely

    Unlesbar. Wohl entstanden nach Lektüre von AvoidOrthographyCompletely.



  • Bashar schrieb:

    Nachteile von const:
    http://c2.com/cgi/wiki?AvoidConstCompletely

    Wenn man sich das mal genauer anschaut kommen dort zu jedem Nachteil, den const angeblich hat (schwarze Punkte), mehrere Gegenargumente (weisse Punkte)...


Anmelden zum Antworten