Ответ 1
Технический термин для синтаксиса № 1 - "орехи".
Тем не менее, я бы немного беспокоился о коде, который тоже должен коснуться 3 раза.
У меня была проверка коллег в коде, подобном этому в C (синтаксиС# 1):
(*(*(*p_member).p_member).p_member).member
Когда я спросил его, почему он не использовал → (синтаксис №2):
p_member->p_member->p_member->member
он действительно защитил, заявив, что синтаксис №2 более сложный, чем # 1... Я закончил тем, что изменил его код, потому что мне пришлось его модифицировать и не мог его прочитать, а затем он рассердился, что я действительно коснулся его...
Какой синтаксис предпочитает сообщество SO? Оба действительны, но я нахожу синтаксис №2 более удобочитаемым.
Я устанавливаю это в wiki сообщества из-за того, что вопрос субъективен.
Технический термин для синтаксиса № 1 - "орехи".
Тем не менее, я бы немного беспокоился о коде, который тоже должен коснуться 3 раза.
Я думаю, что ваш коллега либо неопытен, что-то вроде неофоба, либо просто незнакомец. Вы обнаружите, что единодушным выбором является использование синтаксиса → .
В С++ я бы определенно использовал → , потому что → может быть перегружен.
В C я бы использовал → , а потому, потому что это намного легче читать, быстрее печатать и меньше подвергать ошибкам (надеюсь, что ваш коллега не потеряется в скобках!).
Я печатаю здесь манжету, но мое воспоминание состоит в том, что логика самого существования оператора ->
в C была объяснена в 1-м издании K & R as (перефразирование): d необходимо ввести (*p).a
из-за необходимого приоритета операторов *
и .
.
Не использовать ->
по своему назначению - гайки.
Я возьму дверь №2, Монти! Конечно, его сложнее напечатать, но его более понятно, чем выяснить, какие операторы разыгрывают этот указатель.
Вы также можете обсудить понятие "владение кодом" в своей команде. Вы, коллега, не "владеете" кодом, это делает компания. Следовательно, любой, кто работает в компании, по уважительной причине, может ее редактировать.
субъективный ха?
Я тоже возьму # 2!
Второй вариант, очевидно, выглядит яснее. Единственная причина, чтобы предпочесть # 1, - это случай перегрузки какой-то странной операции * и оператора → , когда # 1 имеет действительно отличный эффект, чем # 2.
Плохой коллега. Измените коллегу.
У меня были впечатления, где "- > " не было правильно реализовано в нескольких компиляторах... так что нормальная (* p).a с большей вероятностью работала, когда у вас несколько уровней вложенности.
Нет 2.
Сказав это, не обижай людей, изменив их код, особенно если это вопрос стиля. Это просто не стоит.