2012-02-02 55 views
0

我看到在它的数据类型写的旧程式码的变量:你使用什么分类变量?

double dblMyVar; 
int intYourVar; 
String strTheirVar; 

但是,如今,它似乎是老式的。这种方法的优点是你可以即时看到某个变量的类型。但我不喜欢长变量名称。每当我我能说出我在一个单一的字符变量,如:

private Product p = new Product(); 

没有命名变量现代化的“良好做法”或约定?你/你的公司使用什么?

+0

每种语言/框架往往都有它自己的约定。例如,[Java](http://www.oracle.com/technetwork/java/codeconv-138413.html)和[.NET](http://msdn.microsoft.com/zh-cn/library/ms229042的.aspx)。 – LukeH 2012-02-02 12:21:42

回答

1
// class member only if needed 
private Product product; 
// instantiates before using it 
product = new Product(); 

在名称中声明变量类型非常没用,因为IDE会在鼠标悬停时向您显示其类型。但是,对于其他开发人员(特别是如果您有大量变量)使用单个字符名称可能会让人感到困惑,并且违背了自我记录原则。

+0

这是一个很好的观点,但是,特别是当你进行持久化时(当你必须在属性和表格中重复字段名称时),长名称对代码来说可能会更慢并且无聊。 – Alex 2012-02-02 12:34:05

+0

@darth_alexious这取决于你如何做你的持久性。这可能是一个有效的观点,即使对于我来说记住'var s'或'var something'是一样的,但是如果你使用Hibernate/JPA /任何其他的东西,它几乎没有区别。 – Marcelo 2012-02-02 12:41:19

+0

的确如此。我必须在我的项目中使用Hibernate,但同时,它太小而不值得。 – Alex 2012-02-02 12:45:46

0

y_xName,对于local/member/parameter/static,y是l/m/p/s。 x可以是int,f是float,p是指针等等。也许sp是共享指针。对于大多数类型的对象/引用,很少有任何东西。我更喜欢代码是自我解释的,因此没有像“ p“或”m_p“。说出它是什么。如果它是一个简短的代码片段,它实际上只是一种通用的“产品”,我可能会将其命名为l_Product。即使你试图保持76(?)个字符的线宽,在合适的位置打破线条,然后缩进可以使它看起来没问题,并且你仍然可以从冗长的名字中看到什么是实际发生。

那么这只是我对其采取..

+0

是的,的确如此。我觉得有点无聊,使用像“PreparedStatement preparedStatement = connection.prepareStatement(sql);”并随时随地使用[preparedStatement] ...我更喜欢p或pst之类的anithing,也使它更易读... – Alex 2012-02-02 12:52:16

1

这个符号被称为“匈牙利”,并通过微软推广,使用它,如果你的作品:http://en.wikipedia.org/wiki/Hungarian_notation

+0

太棒了!我不知道这种做法有背后的历史和理论......非常有趣...... – Alex 2012-02-02 12:43:01

0

你应该使用“单个字母变量”唯一的时间是很短的一段代码中,例如“foreach(var i in item)”或“using(var p = new Product())”。当然,这可以归结为您自己的偏好,但Visual Studio中有一个非常漂亮的小插件叫做StyleCop。它几乎涵盖了所有的样式检查,并且与ReSharper配合使用,它可以实时进行,甚至为您解决问题。

1

这取决于语言。

关于C#:

  • 由于这是一个强类型语言,添加变量的类型作为变量(匈牙利命名法)的名称的前缀,不建议了(太冗长和冗余信息)
  • 开始的变量名是公开的以大写字母是一个约定(比如MyVariable):帕斯卡情况下
  • 开始的变量名是私人用小写(或下划线那么小写)是也是一个惯例。使用下划线或不是个人偏好的问题(例如:_myVariablemyVariable):骆驼情况
  • 命名临时变量(诸如在用于循环的变量)与单个字母(ijz ...)通常是可以的,如果使用限于一个小范围。

但这都是关于个人喜好。

在MSDN上编辑:General Naming Conventions