Entonces, tengo una clase. Es una clase útil. Me gusta mucho. Vamos a llamarlo MyUsefulClass
. MyUsefulClass
tiene un método público. Vamos a llamarlo processUsefulData(std::vector<int>&)
.¿deberían las "funciones auxiliares" de la clase C++ ser miembros, libres o libres de espacio de nombres?
Ahora supongamos processUsefulData
realmente tiene dos cosas y quiero refactorearlo de esto:
std::vector<int> MyUsefulClass::processUsefulData(std::vector<int>& data)
{
for (/*...*/)
{
for (/*...*/)
{
// a bunch of statements...
}
}
for (/*...*/)
{
for (/*...*/)
{
// a bunch of other statements...
}
}
return data;
}
Ahora, quiero dividir estas responsabilidades y volver a escribir el código como
std::vector<int> MyUsefulClass::processUsefulData(std::vector<int>& data)
{
doProcessA(data, dataMember_);
doProcessB(data, otherDataMember_);
return data;
}
Por lo tanto, No sé si debería hacer que las dos funciones auxiliares liberen funciones o funciones miembro, y cuando cada una sea apropiada. Tampoco sé si es mejor hacerlos en un espacio de nombre anónimo o no. ¿Alguien sabe buenos tiempos para hacer esto?
Generalizar de esta manera no le dará una buena respuesta. Cada situación depende de lo que estás haciendo. –