Methods 访问实例变量或self更好吗?
所以我有一个类Methods 访问实例变量或self更好吗?,methods,smalltalk,pharo,squeak,Methods,Smalltalk,Pharo,Squeak,所以我有一个类计数器和一个名为增量 Object subclass: #Counter instanceVariableNames: 'count' classVariableNames: '' poolDictionaries: '' category: 'Pharo-MOOC' 那么,在Smalltalk/Squeak/Pharo中,哪一个是惯用的还是更好 increment "add 1 to the instance variable (coun
计数器
和一个名为增量
Object subclass: #Counter
instanceVariableNames: 'count'
classVariableNames: ''
poolDictionaries: ''
category: 'Pharo-MOOC'
那么,在Smalltalk/Squeak/Pharo中,哪一个是惯用的还是更好
increment
"add 1 to the instance variable (count)"
self count: self count + 1.
或
当然,这是为什么呢?两者都是对等的。 在性能方面,编译器可能会优化这些setter和getter,这样您就不会有任何额外的消息发送。 现在,两种方法都有优点和缺点。我现在能想到的是:
- 第一个在将来的子类中更适合细化(因为它们提供了另一个修改的钩子)李>
- 第二种方法(通常)更具可读性
在我的例子中,我经常选择第一种方法,但我把我的设定者放在一个私人协议中:)我投票结束这个问题,因为它主要是基于观点的。是的,你是对的。我提供的答案只是主观的。虽然比其他人更传统;)顺便说一句,这完全是离题的:这是新闻英语最美妙的事情之一。在Newspeak中,两者之间没有区别,因为在Newspeak中,一切都是消息发送:没有实例变量。事实上,根本没有变量。“实例变量”只是一对getter和setter(或者在不可变“变量”的情况下只是getter)。局部变量只是
LexicalScope
对象上的getter和setter(或getter)对。诸如此类。我不会把这个问题主要称为基于意见的问题。而且@EstebanLM的答案是否定的。它为每一方展示了一个有效的论点,并且回答说,通过采用一种或另一种方法不会犯错误,这是对一个有效问题的有效和深思熟虑的回答。
increment
"add 1 to the instance variable (count)"
count := count + 1.