我与一位开发人员合作,他默认使用ref关键字传递引用类型,例如StringBuilder、string和MemoryStream。无论是否需要实际更改引用本身,他都会这样做。
几乎总是,这些方法只是使用对象并在任何方式下都不改变引用就返回。对于不可变类型,比如字符串,这有时是必要的,但为什么对于可变类型也是如此呢?
对我来说,这有点像“代码异味”,因为它可能导致代码不易维护,因为它比实际需要更加宽容。
然而,这是否严重到我需要与开发人员提出?我的初步感觉是需要,但也许这太过苛求了?
public void ExampleMethod(ref MemoryStream ms)
{
byte b=ms.ReadByte();
...
// No changing of actual ms reference such as: ms=new MemoryStream();
}
几乎总是,这些方法只是使用对象并在任何方式下都不改变引用就返回。对于不可变类型,比如字符串,这有时是必要的,但为什么对于可变类型也是如此呢?
对我来说,这有点像“代码异味”,因为它可能导致代码不易维护,因为它比实际需要更加宽容。
然而,这是否严重到我需要与开发人员提出?我的初步感觉是需要,但也许这太过苛求了?