什么是关于“这个”的最佳实践/编码标准是什么?范围是AS3?
-
03-07-2019 - |
题
关于“this”的最佳实践/编码标准是什么?范围是AS3?有吗?我认为标准化和我的可读性确实有帮助,但有时似乎“太多”。
例如,使用“this”是什么?在下面真的有必要(我知道它的工作没有“这个”)?:
private var _item:Object;
private var selectedItem:Object;
public function set item(value:Object):void
{
this._item = value;
if (this._item["label"] == "doodad")
this.selectedItem = value;
}
public function set item(value:Object):void
{
return this._item;
}
解决方案
"这"除非您想要防止本地范围的变量(例如方法参数)和实例变量之间的命名冲突,否则不需要。
在您的示例中,您已使用下划线标记私有变量,因此不使用“this”的另一个原因是既然你真的说了两遍同样的话。
其他提示
当然没有必要,但我同意它有助于提高可读性。由于我在更动态的语言(例如Perl和Python)中工作得更多,因此这些约定对于快速确定变量和函数的作用域/定位位置至关重要。如果这个惯例适合你,我认为这本身并不是一件坏事。
如上所述,我花了几个小时重新格式化代码,其中包含阻碍可读性的笨拙惯例。
例如:我工作的一个人写了这样的所有作业:
var foo:String= "bar";
这很烦人(我更喜欢“=”所以我可以清楚地看到操作员),我花了很多时间来清理我必须维护的数千行代码。他的会议(虽然我们多次辩论,但他拒绝妥协)往往会阻碍我的工作。
与其他人合作,争取团结。如果他们需要支持你的代码并发现这种情况更加恶化,那么将它留在其中可能是不值得的。如果你不希望任何人直接使用源代码,请使用帮助你理解你的代码和文档的约定(某处)他们的意思是。
如果您在团队中工作,请坚持团队的编码惯例。
但就个人而言,我发现明确使用“this”,当不需要消除歧义时,过度杀戮会对AS3等静态类型语言的可读性产生负面影响(动态语言是另一个故事!)。
一个班级应该只有一个责任,所以一般不应该有太多的属性。在方法内部,您通常会处理三种类型的变量:临时局部变量,方法参数和属性。方法不应该太长,因此应该很容易发现三种类型之间的差异 - 如果它没有在本地定义并且没有作为参数传递,那么它就是一个属性。如果整个方法不适合你的屏幕那么它可能太长了!
我只使用“这个”当需要消除属性和具有相同名称的参数之间的歧义时。
我不想使用“这个”。太多,但有时在Eclipse中,只是为了获得自动完成(可能是最糟糕的理由!)
如果你的例子是:
会更有意义public function set item(_item:Object):void
{
this._item = _item;
if (this._item["label"] == "doodad")
this.selectedItem = this._item;
}