В обзоре кода сотрудник изменил мой код для передачи в потоке в качестве параметра. Он сказал, что это должно гарантировать, что ответственность за распоряжение объектом понятна вызывающей стороне. В некотором смысле я могу сопереживать. Я бы предпочел, чтобы создатель объекта также отвечал за очистку.
С другой стороны, ни один из методов не делает необходимость в using
более ясной. Я предпочитаю также более простой вызов метода.
Принять
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);
}
Есть ли какая-либо техническая причина для добавления дополнительного параметра?