好的,所以我有各种需要序列号和部件号的方法。我的问题是有些方法的顺序调换了:
void Foo(string serialNumber, string partNumber);
void Bar(string partNumber, string serialNumber);
这是一个绝对的痛苦,因为我必须找到所有引用这些方法,并手动检查所有的变量名和值作为参数传入。仔细阅读比编译错误困难得多。我可以这样做:
public class SNString
{
public SNString(string serialNumber)
{
SerialNumber = serialNumber;
}
public string SerialNumber { get; set; }
public override string ToString()
{
return SerialNumber;
}
}
和重置方法
void Foo(SNString serialNumber, PNString partNumber);
void Bar(PNString partNumber, SNString serialNumber);
这允许编译器错误,但是调用
真的很难看:Foo(new SNString("123"), new PNString("456");
我还必须经历修复由此更改生成的所有编译器错误的漫长跋涉,这可能比手动验证所有方法调用的工作量更多。有更好的方法吗?
也许甚至是一个编码人工智能,它会寻找所有变量的变化,命名为"sn", "serialn"等等,并标记潜在的问题?
正如Raymond所提到的,调用带有命名参数的方法可能是一种解决方案。它确保无论方法签名中的参数顺序如何,都要传递正确的参数。
你可以用相同的参数顺序调用Foo和Bar方法。
Foo(serialNumber: "Serial Number", partNumber: "Part Number");
Bar(serialNumber: "Serial Number", partNumber: "Part Number");