Usando argumentos de função como variáveis locais

Algo assim (sim, isso não lida com alguns casos extremos - esse não é o ponto):

int CountDigits(int num) {
    int count = 1;
    while (num >= 10) {
        count++;
        num /= 10;
    }
    return count;
}

Qual a sua opinião sobre isso? Ou seja, usando argumentos de função como variáveis locais.
Ambos são colocados na pilha e, com desempenho praticamente idêntico, estou pensando nos aspectos de melhores práticas disso.
Sinto-me um idiota quando adiciono uma linha adicional e bastante redundante a essa função que consiste emint numCopy = num, no entanto, me incomoda.
O que você acha? Isso deve ser evitado?

questionAnswers(9)

yourAnswerToTheQuestion