你在变量名中使用文章吗?

Rob*_*ell 9 coding-style smalltalk

编辑:似乎至少有两个有效的理由说明为什么Smalltalkers这样做(在消息链接和范围界定问题期间的可读性)但是问题可能会保持更长时间以解决一般用法问题.

原文:由于我早已忘记的原因,我从不在变量名中使用文章.例如:

aPerson,theCar,anObject

我想我觉得文章用无意义的信息弄脏了名字.当我看到使用这个约定的同事的代码时,我的血压会略微上升哦.

最近我开始学习Smalltalk,主要是因为我想学习Martin Fowler,Kent Beck以及其他许多伟大成长和喜爱的语言.

然而,我注意到,Smalltalkers似乎在变量名中广泛使用不定冠词(a,an).一个很好的例子是在下面的Setter方法中:

name: aName address: anAddress.
     self name: aName.
     self address: anAddress
Run Code Online (Sandbox Code Playgroud)

这使我重新考虑我的立场.如果一个像Smalltalkers一样受到极大尊重和影响的社区已广泛采用变量命名的文章,那么可能有充分的理由.

你用它吗?为什么或者为什么不?

Jan*_*šek 10

它在Smalltalk中作为无类型语言通常使用,因为它暗示了方法调用中的参数类型.文章本身表明您正在处理指定类的某个对象的实例.

但请记住,在Smalltalk中,方法看起来有所不同,我们使用所谓的关键字消息,在这种情况下,文章实际上有助于提高可读性:

anAddressBook add: aPerson fromTownNamed: aString
Run Code Online (Sandbox Code Playgroud)


Dam*_*let 8

这个命名约定是Kent Beck的书Smalltalk Best Practice Patterns中的模式之一.恕我直言这本书甚至对于非小型人也是必备的,因为它确实有助于命名事物和编写自我记录代码.此外,它可能是少数几个没有名字展示亚历山大品质的图案语言之一.

关于代码模式的另一本好书是Smalltalk with Style,它以免费PDF格式提供.

通常,惯例是实例变量和访问器使用裸名词,参数使用不定冠词加上角色或类型或组合.临时变量可以使用裸名词,因为它们很少复制实例变量; 或者,这是相当频繁的不仅仅是一个不定冠词更精确他们的名字,以表明自己的控制流的作用:eachFoo,nextFoo,randomChild...


Rob*_*ell 7

我想我刚刚找到答案.正如Konrad Rudolph所说,由于技术原因,他们使用这个惯例:

...这意味着它[ 方法变量 ]不能复制实例变量的名称,接口中定义的临时变量或其他临时变量.- IBM Smalltalk教程

基本上,本地方法变量的名称不能与对象/类变量相同.来自Java,我假设一个方法的变量将是本地范围的,你可以使用类似的东西访问实例变量:

self address
Run Code Online (Sandbox Code Playgroud)

我仍然需要了解Smalltalk中有关方法/本地作用域的更多信息,但似乎没有其他选择; 它们必须使用与实例1不同的变量名,因此anAddress可能是最简单的方法.仅使用地址结果:

Name is already defined ->address
Run Code Online (Sandbox Code Playgroud)

如果你已经定义了一个实例变量地址 ...