我在一些引用的第三方程序集中有一个接口,例如:
public interface ITextHandler
{
void Handle(string text)
}
Run Code Online (Sandbox Code Playgroud)
在我自己的项目中,我通过将其继承到我自己的界面来具体说明:
public interface INameHandler : ITextHandler
{
}
Run Code Online (Sandbox Code Playgroud)
使用像ReSharper这样的工具时,我可能会开始:
public class Foo : INameHandler
{
}
Run Code Online (Sandbox Code Playgroud)
Resharper将显示我可以单击的错误和"实现接口".结果产生:
public class Foo : INameHandler
{
public void Handle(string text)
{
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉ReSharper我想重命名参数更具体?我希望它实现"name"而不是"text":
public class Foo : INameHandler
{
public void Handle(string name)
{
}
}
Run Code Online (Sandbox Code Playgroud)
是否有一个resharper评论或我可以添加到INameHandler的东西重新定义默认参数名称?
Jon*_*eet 11
我建议你不要这样做.实际上,就在昨晚我最终努力将我的参数名称放回到界面中声明的那个(我怀疑我后来在界面中改变了主意).
考虑以下代码:
Foo handler = new Foo();
handler.Handle(name: "Hello");
Run Code Online (Sandbox Code Playgroud)
现在考虑这种无害的重构,理由是更喜欢通过接口类型而不是具体类型声明变量:
INameHandler handler = new Foo();
handler.Handle(name: "Hello");
Run Code Online (Sandbox Code Playgroud)
如果参数名称不同,则会出现编译时错误.它可能比这更糟糕 - 如果重新排序现有的参数名称,最终可能会编译代码但会改变意义.讨厌,讨厌的东西.
我不是说这会发生-但它是一个很好的理由(IMO)进行选择时,参数名称,特别是在接口,并在实现这些名字坚持要小心.
(嗯...也许我应该写一个小工具来找到所有违反这个......可能很方便.)
| 归档时间: |
|
| 查看次数: |
227 次 |
| 最近记录: |