【发布时间】:2011-01-09 03:03:59
【问题描述】:
这里http://source.android.com/source/code-style.html#follow-field-naming-conventions声明:
字段名称
- 非公开、非静态字段名称以 m 开头。
- 静态字段名称以 s 开头。
- 其他字段以小写字母开头。
- 公共静态最终字段(常量)为 ALL_CAPS_WITH_UNDERSCORES。
它还指出:
以下规则不是指南或建议,而是严格的规则。除非在需要使用的基础上获得批准,否则您不得忽视我们在下面列出的规则。
我不喜欢在类中的私有或包字段之前使用“m”约定。我真的觉得这没有灵感……我的意思是,如果我们尝试应用好的设计,类的低耦合意味着公共领域很少。实际上,在我的程序中,我通常没有公共字段,即使我需要一些公共字段,我也会使用 getter 和 setter...
那么,为什么要强迫我在程序中几乎所有的字段前面都加上一个“m”呢?拥有几个公共领域(如果有的话)会不会更容易,前面有一些“g”之类的?或者只是像bean建议的那样使用setter和getter? 这真的让我的代码更难阅读......
此外,遵循这些准则,方法中使用的局部临时变量没有限制,因此它们很容易被误认为是公共全局字段(也没有限制)......我也发现这也是错误的,因为它很可能错误的来源... 我知道有一种与字段区分开来的方法,但是私有/受保护的成员字段是应用程序中最常用的,它们的“可读性”不应该降低。
你怎么看?我应该遵守指南吗?
【问题讨论】:
-
经常强制使用此类前缀的原因之一是防止隐藏成员字段。例如,如果您没有任何前缀,您通常有一个构造函数或 setter 方法的参数,该参数与成员字段同名。在这种情况下,您必须使用“this”访问成员字段。每当它被隐藏时,它就在它面前。程序员偶尔会忘记“this.”,这会导致错误。公共字段上的前缀没有那么有用,因为无论如何都不需要在公共字段上设置 setter。
-
我实际上更喜欢私有字段上的 m_ 前缀,因为它使您的类方法更易于阅读。之所以使用这些约定,是因为阅读的代码多于编写的代码...我认为那是在 Code Complete somwhere 中?...
-
我同意你的看法。我不喜欢“m”约定,我很高兴不使用它
标签: android coding-style field private