En una revisión del código, un compañero de trabajo cambió mi código para pasarlo en un flujo como parámetro. Dijo que esto era para asegurar que la responsabilidad de deshacerse del objeto sea clara para la persona que llama. En cierto sentido, puedo empatizar. Preferiría que el creador del objeto también sea responsable de la limpieza.¿Deberían pasar objetos desechables?
Por otro lado, ninguno de los métodos hace que la necesidad de un using
sea más clara. Prefiero la llamada al método más simple también.
Take
public static TextReader Serialize<T>(T obj) where T: new()
{
if (obj == null) throw new ArgumentNullException("obj");
return Serialize<T>(obj, null);
}
VS
public static void Serialize<T>(T obj, TextWriter outbound) where T : new()
{
if (obj == null) throw new ArgumentNullException("obj");
Serialize<T>(obj, outbound, null);
}
¿Hay alguna razón técnica para añadir el parámetro adicional?
Si tomamos un ejemplo del mismo .NET Framework, por ejemplo, 'XmlSerializer', la secuencia tiende a pasarse como un parámetro. – mellamokb
Puede ser una pregunta para http://codereview.stackexchange.com/ – MattDavey