Ref*_*din 51 .net resharper implicit
我有ReSharper 4.5并且到目前为止发现它非常宝贵,但我有一个顾虑;
它似乎想要隐含每个变量声明(var).
作为一个相对较新的开发人员,在这方面我应该相信ReSharper多少钱?
从Paints Tab Headers的方法中获取以下代码片段.
TabPage currentTab = tabCaseNotes.TabPages[e.Index];
Rectangle itemRect = tabCaseNotes.GetTabRect(e.Index);
SolidBrush fillBrush = new SolidBrush(Color.Linen);
SolidBrush textBrush = new SolidBrush(Color.Black);
StringFormat sf = new StringFormat
{
Alignment = StringAlignment.Center,
LineAlignment = StringAlignment.Center
};
Run Code Online (Sandbox Code Playgroud)
Resharper希望我将所有5个改为var.我已经阅读了以下类似帖子,在C#中使用var关键字,但我想从ReSharper的角度来看.
Joe*_*orn 44
Resharper主要关注帮助您重构代码,var关键字通常使重构更容易.例如,如果任何这些函数的返回值都变为兼容类型,则不必更改任何此代码.因此,现在重构您的tabCaseNotes类型现在要容易一些.
就个人而言,我经常倾向于单独留下前两行,因为我喜欢看到变量的类型名称明确列在声明变量的行的某处.如果有的话,我可能会寻找一个可以使用的接口,这样我也可以获得与var关键字相同的"泛型",而不会丢失任何重要的可读类型信息.不过,我肯定会用var的fillBrush,textBrush和sf.
egl*_*ius 18
您不需要在行中使用类型以使其更具可读性,这取决于个人偏好.我喜欢var变化:
var currentTab = tabCaseNotes.TabPages[e.Index];
var itemRect = tabCaseNotes.GetTabRect(e.Index);
var fillBrush = new SolidBrush(Color.Linen);
var textBrush = new SolidBrush(Color.Black);
var sf = new StringFormat
{
Alignment = StringAlignment.Center,
LineAlignment = StringAlignment.Center
};
Run Code Online (Sandbox Code Playgroud)
更新:我将在其中添加一个有争议的观点.除非我正在阅读一本书中的代码,否则我通常不关心理解我正在阅读的一些代码行的具体类型.考虑.GetTableRectangle(e.Index),您没有显示对其进行操作的代码:
var itemRect = tabCaseNotes.GetTableRectangle(e.Index);
//do some operations on itemRect
Run Code Online (Sandbox Code Playgroud)
在阅读特定代码时,我将从itemRect上的操作中获取更多信息,而不是从类型中理解它.它可以是IRectangle,Rectangle,CustomRectangle,但仍然不会说明代码在做什么.相反,我更关心itemRect.Height,itemRect.Width或itemRect.GetArea()以及所涉及的逻辑.
更新2:正如其他人指出你可以关闭它.确保团队采用相同的做法,或者每次不同的人触摸代码时,您可能会以某种方式进行更改.请参阅:http://www.jetbrains.com/resharper/features/codeTemplate.html
Resharper认为这是最好的做法,但有些人不同意,因为你已阅读链接帖子.我喜欢使用显式声明来提高可读性,但是对于每个人都有自己的可读性.如果要使用显式声明,可以在Resharper中禁用该规则.
在C#中,我更喜欢var到处使用.为什么?出于同样的原因,我使用的是firstName代替strFirstName或不amount代替intAmount.当然,更冗长的方式在一张纸上更具可读性,或者 - 正如你指出的那本书 - 但我的代码中还没有出现在书中.
现在,我不久就向我的一位同事询问了这项intAmount业务,他提出了一个非常好的观点.他说它在直接文本编辑器中很有用,但是当你有Intellisense时,只需将鼠标悬停在变量上即可获得相同的信息.
最后,虽然我很欣赏,其他人已经指出的(即使用折中var与new语句)和论证是有效的强,我倾向于引导从远的一致性和短手可读性的唯一基础.我的一致性论点是,如果可读性对您来说如此重要,那么为什么不使用它,intAmount以便稍后可以在代码中告诉数据类型?
| 归档时间: |
|
| 查看次数: |
16917 次 |
| 最近记录: |