Penso que este é um tópico válido, mas a razão pela qual você está obtendo respostas contraditórias é por causa da forma como a pergunta foi formada. Pessoalmente, tive as mesmas experiências com minha equipe em que passar membros como argumentos era desnecessário e complicou o código. Teríamos uma classe que trabalha com um conjunto de membros, mas algumas funções acessam os membros diretamente e outras funções modificam os mesmos membros através de parâmetros (ou seja, usam nomes completamente diferentes) e não havia absolutamente nenhuma razão técnica para fazer isso. Por razões técnicas, quero dizer um exemplo que Kate forneceu.
Eu recomendaria dar um passo atrás e, em vez de focar exatamente na passagem dos membros como parâmetros, iniciar discussões com sua equipe sobre clareza e legibilidade. Mais formalmente ou apenas nos corredores, discuta o que torna alguns segmentos de código mais fáceis de ler e outros segmentos de código mais difíceis. Em seguida, identifique medidas de qualidade ou atributos de código limpo que, como uma equipe, você gostaria de buscar. Afinal, mesmo quando trabalhamos em projetos de campo verde, passamos mais de 90% do tempo lendo e assim que o código é escrito (digamos 10 a 15 minutos depois), ele entra em manutenção, onde a legibilidade é ainda mais importante.
Portanto, para o seu exemplo específico aqui, o argumento que eu usaria é que menos código é sempre mais fácil de ler do que mais código. Uma função que possui 3 parâmetros é mais difícil para o cérebro processar do que uma função que não possui nenhum ou 1 parâmetro. Se houver outro nome de variável, o cérebro precisará acompanhar outra coisa ao ler o código. Então, lembre-se de "int m_value" e "int localValue" e lembre-se de que um realmente significa que o outro sempre é mais caro para o seu cérebro do que simplesmente trabalha com "m_value".
Para mais munição e idéias, eu recomendaria pegar uma cópia do Código Limpo do tio Bob .