自从我发现汽车房产以来,我试着到处使用它们.以前我会在课堂上使用的每个属性都会有一个私人成员.现在这被auto属性所取代.我通常使用普通成员字段的方式在我的类中使用该属性.问题是该属性以国会大厦开始,这使得在以这种方式使用它时看起来有点奇怪.我之前并不介意属性从国会大厦开始,因为它们总是落后于"点".现在我发现自己在内部添加了我内部使用的所有属性this.,以此来抚慰我的感觉.
我的困境是,在我总是有点反对使用内部成员的所有用法前缀this.,除非"必要"(如在setter或构造函数中).所以我有点想找到第二个意见.有没有一个标准的好方法来做到这一点?我应该停止抱怨(我倾向于成为"蚂蚁驼背"(荷兰语表达))?
之前:
class Foo
{
private Bar bar;
public Bar Bar { get { return bar; } }
public Foo(Bar bar)
{
this.bar = bar;
}
public void DoStuff()
{
if(bar != null)
{
bar.DoMethod();
}
}
}
Run Code Online (Sandbox Code Playgroud)
后:
class Foo
{
public Bar Bar {get; private set;}
public Foo(Bar bar)
{
this.Bar = bar;
// or
Bar = bar;
}
public void DoStuff()
{
if(this.Bar != null)
{
this.Bar.DoMethod();
}
// or
if(Bar != …Run Code Online (Sandbox Code Playgroud) 我正在维护一些VB.NET代码,以前的开发人员已经完成了这样的事情.Dim frmDuplicates = New frmDuplicates或者甚至Dim frmDuplicates = New FrmDuplicates(因为VB的不区分大小写而没有区别).
我不喜欢它作为编码约定,因为我想一目了然地将我的实例方法调用与类调用区分开来.
这与命名公共属性与其类型相同并不相同.我没有问题.
同样在VB项目的Visual Studio 2010中,如果您的对象与类名相同(当然不考虑大小写),那么Intellisense不会像在C#项目中那样突出显示不同颜色的类引用.此外,如果重命名对象引用(在VB项目中),它还将重命名任何类引用.在C#中,它将正确地重命名对象引用.
对于以下代码,
Module Module1
Sub Main()
Dim TestClass As TestClass = New TestClass()
TestClass.SharedMethod()
TestClass.InstanceMethod()
Console.ReadKey()
End Sub
End Module
Public Class TestClass
Public Shared Sub SharedMethod()
Console.WriteLine("SharedMethod()")
End Sub
Public Sub InstanceMethod()
Console.WriteLine("InstanceMethod()")
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
如果重命名对象引用TestClass,它也会重命名类引用TestClass.SharedMethod()所以如果你重命名它test,例如,你将有
test.SharedMethod() ' You will get a warning on this line
test.InstanceMethod()
Run Code Online (Sandbox Code Playgroud)
VB允许你从对象引用调用类方法(这不是一个好主意IMO),但至少你会得到一个警告.
Access of shared …Run Code Online (Sandbox Code Playgroud) VS的ReSharper扩展建议我在下面的属性中使用PascalCase.
public Color Color { get; private set; }
Run Code Online (Sandbox Code Playgroud)
这里颜色是枚举类型.我永远不会想到这是可能的,因为它与类型相同.但它是有效的.这是一般规则建议的吗?我是否必须一直听ReSharper?将不胜感激PascalCase的良好参考链接.
我开始一个新项目,我有一些问题试图实现一些命名约定.
我以前使用的是以大写和单数形式开头的类,比如Car或User,以及我的变量以小写字母开头,所以如果我需要声明一个类有Car和User类型的类,我会这样做:
public Car car;
private User user;
Run Code Online (Sandbox Code Playgroud)
现在我试图使用一些属性,因为我看到它们也应该是PascalCase,这意味着如果我需要声明相同的例子,我会:
public Car Car { get; set; }
private User User { get; set; }
Run Code Online (Sandbox Code Playgroud)
你们都可以看到这里的问题是什么,或者你们不认为这是一个问题?
所以我该怎么做?我在这里失踪了什么?