什么是关于“这个”的最佳实践/编码标准是什么?范围是AS3?

StackOverflow https://stackoverflow.com/questions/619505

关于“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;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top