1

关于“this”范围的最佳实践/编码标准是什么是 AS3?有吗?我觉得它确实有助于标准化和我的可读性,但有时它看起来“太多了”。

例如,在下面使用“this”真的有必要吗(我知道没有“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;
}
4

4 回答 4

3

“this”不是必需的,除非您想防止局部范围变量(例如方法参数)和实例变量之间的命名冲突。

在您的示例中,您已经使用下划线来标​​记私有变量,因此不使用“this”是一个额外的理由,因为您实际上是在说两次相同的事情。

于 2009-03-06T19:57:37.753 回答
1

这当然没有必要,但我同意它有助于提高可读性。由于我更多地使用更动态的语言(例如 Perl 和 Python),因此此类约定对于快速确定变量和函数的作用域/定位位置至关重要。如果这个约定对你有用,我认为这本身并不是一件坏事。

因此,我花了数小时重新格式化包含妨碍可读性的笨拙约定的代码。

例如:与我一起工作的一个人写了这样的所有作业:

var foo:String= "bar";

这很烦人(我更喜欢“=”,这样我可以清楚地看到运算符),而且我花了很多时间清理我必须维护的数千行代码。他的惯例(尽管我们争论了好几次,但他拒绝妥协)往往会阻碍我的工作。

与其他与您一起工作的人努力团结。如果他们需要支持您的代码并发现这使情况恶化,那么将其留在其中可能是不值得的。如果您不希望任何人直接使用源代码,请使用有助于您理解代码和文档(某处)内容的约定他们的意思是。

于 2009-03-06T17:04:03.613 回答
1

如果您在团队中工作,请遵守团队的编码约定。

但就个人而言,我发现明确使用“this”,当不需要消歧时,过度杀伤会对像 AS3 这样的静态类型语言的可读性产生负面影响(动态语言是另一回事!)。

一个类应该只有一个真正的责任,所以通常不应该有太多的属性。在方法内部,您通常处理三种类型的变量:临时局部变量、方法参数和属性。方法不应该太长,所以应该很容易发现这三种类型之间的区别——如果它没有在本地定义并且没有作为参数传递,那么它就是一个属性。如果整个方法不适合您的屏幕,那么它可能太长了!

我只在需要区分同名属性和参数时才使用“this”。

于 2009-03-06T17:29:42.257 回答
0

我不想过多地使用“this”,但有时在 Eclipse 中这样做,只是为了获得自动完成功能(可能是这样做的最糟糕的理由!)

如果您的示例是:

public function set item(_item:Object):void
{
    this._item = _item;

    if (this._item["label"] == "doodad")
        this.selectedItem = this._item;
}
于 2009-03-06T19:46:12.210 回答