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

问题描述 投票:1回答:4

关于“此”范围的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;
}
actionscript-3 scope coding-style
4个回答
3
投票

除非您要防止局部作用域变量(例如方法参数)和实例变量之间的命名冲突,否则不需要“ this”。

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


1
投票

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

这样说来,我花了数小时重新格式化包含尴尬约定的代码,这些约定妨碍了可读性。

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

var foo:String= "bar";

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

努力与其他人一起工作。 如果他们需要支持您的代码并感到麻烦,那么将其保留下去是不值得的。如果您不希望任何人直接使用源代码,请使用有助于您理解代码和文档(在某处)的约定。他们的意思。


1
投票

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

但是我个人认为,明确使用“ this”(不需要歧义时)会导致对像AS3这样的静态类型语言的可读性产生负面影响的过大杀伤力(动态语言是另一个故事!)。

一个类实际上应该只承担一个责任,因此通常不应在类上包含太多属性。 在方法内部,您通常处理三种类型的变量:临时局部变量,方法参数和属性。 方法不应太长,因此应该容易发现三种类型之间的差异-如果未在本地定义并且未作为参数传递,则为属性。 如果整个方法都不适合您的屏幕,则可能太长了!

仅在需要区分属性和具有相同名称的参数时才使用“ this”。


0
投票

我宁愿不要过多使用“ this”,但有时在Eclipse中这样做只是为了实现自动补全(可能是最糟糕的原因!)

如果您的示例是:

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

    if (this._item["label"] == "doodad")
        this.selectedItem = this._item;
}
© www.soinside.com 2019 - 2024. All rights reserved.