Moje rozumienie jest nawiasami, nie ma znaczenia, więc czy istnieje jakikolwiek powód (inny niż "poprawa" jasności kodu), który Clang ostrzega o tym jako domyślny? Wolę nie dodawać nawiasów, ponieważ nie lubię dodawać kodu dla dobra kodu.Dlaczego Clang warn: `&& 'within' || '`?
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) {
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
Co powiesz na dodanie kodu dla * jasności * sake? Nawiasy w tym miejscu pomogłyby ludziom, którzy nie pamiętają reguł o pierwszeństwie słów "&&" i "||" (które nie zawsze się pojawiają). – cHao
Jestem za dodaniem kodu, aby poprawić przejrzystość. Osobiście jednak uważam, że dodatkowy szum wizualny niepotrzebnych nawiasów zmniejsza w tym przypadku klarowność. Kiedy widzę dodatkowe nawiasy, natychmiast skanuję całą linię szukając powodu dla nich, gdy nie znajduję żadnego, muszę wtedy zastanowić się przez chwilę, jeśli przeczytam to źle lub jeśli dany kod jest jedynie próbą "pomocy" mnie zrozumieć pierwszeństwo operatora, o którym już wiedziałem. Ten kod jest * zdecydowanie * nie dla niedoświadczonych programistów, większość osób czytających to będzie na moim poziomie, a więc zakładam, że będzie to samo. – mxcl
Chociaż punkt dotyczący jasności jest ważny, wydaje się dziwne, aby ostrzegać o całkowicie legalnym kodzie zgodnie z regułami języka. –