Mein Verständnis ist, dass die Klammern keinen Unterschied machen, gibt es also einen Grund (außer um die Code-Klarheit zu „verbessern“), dass Clang dies standardmäßig warnt? Ich ziehe es vor, die Klammern nicht hinzuzufügen, da ich es nicht mag, Code um des Codes willen hinzuzufügen.
src/websocket.c:420:43: warning: '&&' within '||' [-Wlogical-op-parentheses]
if (rv == 0 && N != 0 || rv == -1 && errno == ECONNRESET) {
~~ ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
src/websocket.c:420:43: note: place parentheses around the '&&' expression to
silence this warning
if (rv == 0 && N != 0 || rv == -1 && errno == ECONNRESET) {
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
Wie wäre es mit dem Hinzufügen von Code für Klarheit ist Sake? Klammern hier würden Leuten helfen, die sich nicht an die Regeln zum Vorrang von erinnern
&&
und||
(die nicht allzu oft auftauchen).– chao
5. Juni 2013 um 12:30 Uhr
Ich bin dafür, Code hinzuzufügen, um die Übersichtlichkeit zu verbessern. Ich persönlich finde jedoch, dass das zusätzliche visuelle Rauschen der unnötigen Klammern in diesem Fall die Klarheit verringert. Wenn ich die zusätzlichen Klammern sehe, scanne ich sofort die ganze Zeile und suche nach einem Grund dafür, wenn ich keinen finde, muss ich eine Weile grübeln, ob ich es falsch gelesen habe oder ob der betreffende Code nur versucht, mir zu „helfen“. um die Operatorpräzedenz zu verstehen, die ich bereits kannte. Dieser Code ist bestimmt nicht für unerfahrene Programmierer, die meisten Leute, die es lesen, werden auf meinem Niveau sein, und daher gehe ich davon aus, dass sie genauso denken werden.
– mxkl
5. Juni 2013 um 12:33 Uhr
@KingsIndian Compiler warnen auch davor
if (x = 3)
, was vollkommen legal ist. Der Punkt ist, dass es als etwas angesehen wird, das die Leute oft falsch verstehen, also entschieden die Compiler-Autoren, dass es eine Warnung wert ist.– Daniel Fischer
5. Juni 2013 um 12:43 Uhr
Ich behebe auch immer Warnungen und finde es lächerlich, dass Leute dafür plädieren, dass ich unnötigen Code hinzufüge, um Leuten zu helfen, die wichtige Dinge nicht gelernt haben, wie z Operator Vorrang. Der Himmel bewahre, dass ich jemals einen so schrecklichen Programmierer einstelle.
– mxkl
5. Juni 2013 um 16:51 Uhr
Warum verteidigen alle diese Warnung so vehement? Wie würden Sie sich fühlen, wenn der Compiler Sie jedes Mal warnen würde, wenn Sie „2 + 3 * 4“ sagen? Es ist mehr als lächerlich. Die Annahme ist, dass Programmierer a Basic Verständnis der Sprache, mit der sie arbeiten, und brauchen kein visuelles Durcheinander, um Vorrang zu verstehen. Außerdem scheint Xcode keine Option zu bieten, um dies standardmäßig zu deaktivieren …
– Philipp Guin
17. Juni 2013 um 21:53 Uhr