Mißbrauche ich const?

8

In den letzten Wochen habe ich viel const überall benutzt. Nicht nur in Methoden- oder Argumentdeklarationen, sondern auch für temporäre Variablen.

Lassen Sie mich das mit einer einfachen Funktion veranschaulichen.

Ich habe geschrieben:

%Vor%

Aber jetzt ist es eher wie folgt:

%Vor%

Letzteres ergibt für mich mehr Sinn und scheint weniger fehleranfällig zu sein. (Ich gebe zu, dass es in diesem Beispiel nicht wirklich wichtig ist) Allerdings habe ich sehr wenige Code-Beispiele gesehen, in denen const für temporäre / lokale Variablen verwendet wurde. Und ich würde gerne verstehen warum.

Gibt es einen Grund, warum dies nicht der Fall ist? Missbrauche ich mit meiner Verwendung von const ? Oder ist es nur ich, der sich die falschen Proben angesehen hat?

    
ereOn 09.11.2010, 10:22
quelle

7 Antworten

21

Die Verwendung von const auf lokalen Variablen verbessert die Code-Klarheit, also ist es eine gute Idee. Sie sehen const und Sie wissen sofort, dass die Variable später im Bereich nie geändert wird. Es ist aus der gleichen Serie wie Funktionen kurz und früh zurück .

Entwickler sind faul - sie denken oft, dass es ein nutzloses Wort ist, das nichts ändert. IMO sie sind falsch.

    
sharptooth 09.11.2010, 10:28
quelle
5

Dies ist effektiv der gleiche Grund, warum Behauptungen selten verwendet werden. const auf Schnittstellen ist obligatorisch, const in der Implementierung ist freiwillig. Programmierer sind faul.

Edit: nur für den Fall, dass es nicht klar ist, ist Ihre Vorgehensweise besser.

    
Let_Me_Be 09.11.2010 10:28
quelle
3

Ich würde persönlich sagen, dass es nie zu viele const gibt, und ich verwende sie reichlich für lokale Variablen. Der einzige Kontext, in dem ich konnte hinzufügen const , aber nicht auf Parameter von integrierten Typen:

  

void foo (const int);

Hier glaube ich (aber das ist eine Frage des persönlichen Geschmacks wirklich), dass es nutzlos die Schnittstelle verstopft.

    
icecrime 09.11.2010 10:42
quelle
2

Ich glaube nicht, dass es nur ein Fall von Programmierern ist, die faul sind - auch die Präzision ist eine Überlegung. Manche Leute finden int x; weniger mentale Belastung als "const int x;" wenn man die Funktionen überprüft: das bisschen mehr Platz könnte ihnen helfen, einen passenden Kommentar zu finden. Ich erwähne das nicht als Empfehlung, sondern weil ich denke, dass es wichtig ist, alle "Kosten" zu verstehen, die die Einstellung der Menschen beeinflussen, da es wirklich verwirrend ist, dass die Menschen hier nicht konsequent konsistent sind.

Es ist auch interessant zu bedenken, dass es bei der Verwendung einer Variablen in einer Funktion irgendwann notwendig werden kann, sie zu optimieren. Zum Beispiel, Sie berechnen etwas, aber dann gehen Sie in ein paar if-Anweisungen und Dinge und es gibt einige Randfall, wo Sie ein nachstehendes Element aus einer Zeichenfolge entfernen müssen, behandeln Sie ein Einzel-Problem, löschen Sie den Wert usw. Wenn Sie die Variable const ursprünglich erstellt haben, wird Ihr Arbeitsablauf mehr unterbrochen, um zu const zurückzukehren und const aus der Definition zu entfernen, und den Cursor dann an die Stelle zurückversetzen, an der Sie arbeiten. Dem entgegenzuwirken, ist eine Angewohnheit, const, wo möglich, zu verwenden, eine rote Flagge, die einige solcher Optimierungen im Funktionskörper versteckt, und sehr nützlich für das spätere Verständnis und die Wartung.

Dennoch ermutige ich Sie aktiv, const weiter zu verwenden: Normalerweise tue ich das und betrachte es als Best Practice. Die Gründe dafür sind offensichtlich von Ihnen verstanden und wurden in anderen Antworten aufgezählt.

    
Tony Delroy 09.11.2010 10:36
quelle
1

In C ++ ist dies ein guter Ansatz, Variablen zu konstruieren, wenn Sie können. Aber nachdem dies gesagt wurde, macht dies mehr Sinn, wenn eine Variable entweder als Argument übergeben wird oder zwischen verschiedenen Teilen des Codes (wie Klassenvariablen) geteilt wird. Die Hauptidee besteht darin, die versehentliche Änderung von Variablen durch anderen Code zu stoppen, der nicht weiß, dass diese Variable nicht geändert werden soll.

Daher ist es im Hinblick auf das Obige für Variablen, die für eine Funktion lokal sind, eine Art Overkill zu bilden. Dies schadet jedoch nichts.

    
Aamir 09.11.2010 10:32
quelle
1

Nach meiner bescheidenen Meinung sollten Sie den Compiler einer stark typisierten Sprache bei jeder Gelegenheit nutzen. Ich verwende const für temporäre, lokale Variablen, unveränderliche Referenzen, etc.

Die Const Korrektheit C ++ FAQ könnte nützlichere Informationen enthalten.

    
dripfeed 09.11.2010 10:35
quelle
1

Da ist nichts falsch , aber Sie verwenden const, um den Compiler einzubinden, der Ihnen hilft, eine Einschränkung durchzusetzen, wenn Sie wissen, dass ein Objekt nicht geändert werden sollte. Wenn Sie nicht darauf achten , ob das Objekt geändert wird, ist es überflüssig.

    
Mud 09.11.2010 10:29
quelle

Tags und Links