Я думаю, что это актуальная тема, но причина, по которой вы получаете неоднозначные ответы, заключается в том, как был сформирован вопрос. Лично у меня был такой же опыт с моей командой, когда передача членов в качестве аргументов была ненужной и запутывала код. У нас был бы класс, который работает с набором членов, но некоторые функции обращаются к членам напрямую, а другие функции изменяют одни и те же члены через параметры (то есть используют совершенно разные имена), и для этого не было абсолютно никаких технических причин. По технической причине я имею в виду пример, который привела Кейт.
Я бы порекомендовал сделать шаг назад и вместо того, чтобы сосредоточиться именно на передаче элементов в качестве параметров, начать обсуждение с вашей командой ясности и читабельности. Либо более формально, либо просто в коридорах, обсудите, что делает некоторые сегменты кода более легкими для чтения, а другие - более сложными. Затем определите показатели качества или атрибуты чистого кода, к которым вы, как команда, хотели бы стремиться. В конце концов, даже работая над «зелеными» проектами, мы тратим более 90% времени на чтение, и как только код написан (скажем, через 10–15 минут), он уходит в техобслуживание, где читаемость становится еще важнее.
Так что для вашего конкретного примера здесь я бы использовал аргумент, что меньше кода всегда легче прочитать, чем больше кода. Функция, которая имеет 3 параметра, для мозга труднее обрабатывать, чем функция, которая не имеет ни одного параметра или 1 параметра. Если есть другое имя переменной, мозг должен отслеживать еще одну вещь при чтении кода. Итак, чтобы запомнить «int m_value», а затем «int localValue» и помнить, что одно действительно означает, что другое всегда дороже для вашего мозга, чем просто работа с «m_value».
Для большего количества боеприпасов и идей я бы порекомендовал взять копию Чистого кода дяди Боба .