Digamos que quiero algunas funciones para tratar con algún archivo, y estaba considerando 2 opciones.¿Debo usar una clase de funciones o un espacio de nombres de funciones?
1) Crear una clase como SavedDataHandler
que un usuario podría utilizar como esto ....
// Note that SavedDataHandler has no members. It just has functions that operate on a
// resource (the file)
SavedDataHandler gameSave;
gameSave.SaveData(arg1, arg2); // to save data
gameSave.DeleteSave(); // Delete the save
...
2) Crear un espacio de nombres de funciones
namespace SavedDataHandler {
SaveData(...) { ... }
DeleteSave(...) { ... }
...
}
que un usuario llame como
SavedDataHandler::SaveData(arg1, arg 2);
SavedDataHandler::DeleteSave();
¿Cuál sería preferido?
P.S. Pensé en esto cuando estaba pensando en la recomendación de Scott Meyer de preferir las funciones no miembro de no amigos a las funciones de miembro. Me he encontrado con decisiones en las que tengo una función (por lo general, una función de miembro privado para ayudar a la clase a hacer cosas), que fácilmente podría convertirse en un no miembro, ya que no funciona en clases privadas.
Sin embargo, la función solo la usa esa clase. Por supuesto, el programa podría evolucionar hasta el punto en que otra clase lo necesite, pero me resulta difícil encontrar un lugar para estas funciones que no son miembros. Es fácil cuando tienes muchas funciones con un propósito general, pero considero que las funciones individuales que no son miembros son difíciles de organizar en un lugar específico, y considero que dejarlo como miembro lo mantiene limpio. ¿Algún consejo sobre este tema?
Más o menos la misma heurística que uso :) –
¡Gracias por vincularme al artículo de Scott Meyers sobre ddj! – Pete