【问题标题】:Why is prefixing class, method, or variable names with "My" considered bad practice?为什么以“My”为前缀的类、方法或变量名被认为是不好的做法?
【发布时间】:2015-12-12 03:52:19
【问题描述】:

通常在代码 sn-ps 或示例中,前缀 My 用于类、方法和变量。

Google's gcm examplenumerous questions on stackoverflow,我们一直都在看到这种情况。它可以在PHPJavascriptC# 以及几乎所有其他语言的文档中找到。

那么,鉴于它非常流行,为什么我不应该将 MyClassmyMethod 使用 myVar1 投入生产?为什么这是不好的做法,我应该怎么做?

【问题讨论】:

  • 示例使用“MyClass”,因为它们不能只使用“Class”——它是一个保留字。 “Var”、“Function”等也是如此。由于它们是示例,它们会说:“假设您有一个名为 MyClass 的类......” 在您的代码中,根据它所代表的内容命名您的类。如果它是您正在建模的用户,则类名可以是“用户”。如果是汽车,可能是“汽车”,或者更通俗地说是“车辆”。看到了吗?

标签: coding-style naming-conventions standards


【解决方案1】:

名字很重要

其他一切都归结为一个简单的事实。

拥有清晰、有意义的变量名是编写可理解和可维护的代码的重要因素。 - Computational Fairy Tales

当您编写一段代码时,您希望任何阅读它的人(包括您在三个月内!)几乎立即知道它的作用。为了记住,您可能需要添加关于它的评论。不过……

正确使用cmets是为了弥补我们在代码中表达自我的失败——Express Names in Code: Bad vs Clean

为了帮助解决这个问题,您的名字应该具有描述性和简洁性。通常,当添加前缀 My 时,它会替换一个可能提供更多信息的前缀。为什么不用MyService,而不是GcmListenerService

如果我让它具有描述性,但我只是添加My,会怎样?喜欢MyGcmListenerService

这违反了规则的简洁部分。添加My 有什么好处? My 是否为名称增加了价值?即使您试图获取代码(使用vcs 会更好并且可行),My 也毫无意义。谁写了My嗯,很明显,我做到了。它就在那里说,“我的”。

如果我真的不应该使用My,为什么会有这么多例子?

真的,它只是一个占位符。

就像元句法变量“foo”和“bar”——它通常用作真实姓名的占位符。 - Opinions on using My as a class name prefix

不幸的是,大多数有经验的程序员只是假设查找示例的人会知道这一点,并在实际使用代码时将My 替换为一个好的变量名。但是,对于那些刚接触编程的人来说,如果您到处看到它,而不是知道它是一个占位符,您可能会认为使用My 实际上是一个标准和最佳实践。

好的,那我用什么来代替My

有很多关于命名变量和类的非常好的指南。你可以从wikipedia 开始,但是如果你用谷歌搜索一下,你会发现很多关于好名字和坏名字的文章。不过,这一切的核心是一条规则:使名称具有描述性,并保持简洁。

如果我读到一个类、方法或变量的名称并立即知道它的用途,这是一个好名字。

【讨论】:

    猜你喜欢
    • 2012-05-18
    • 2010-10-22
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2010-11-04
    相关资源
    最近更新 更多