我认为来自Google的官方code style guidelines非常有帮助,但它们不包含视图元素的命名约定。
让我们说一下简单的Activity包含一个ImageView,一个TextView和Button。代码看起来像这样:
class SimpleActivity extends Activity {
private ImageView mImageView;
private TextView mTextView;
private Button mButton;
}
当然,我们不会为小部件提供这样的名称,因为它们不具有描述性。我们应该知道这个小部件的功能。因此,让我们想象ImageView代表用户个人资料图片,TextView代表用户名,Button代表继续按钮。
我会将可能的命名约定分为三类:
1
class SimpleActivity extends Activity {
private ImageView mUserProfileImageView;
private TextView mUsernameTextView;
private Button mContinueButton;
}
第一个约定的最大优点是,在代码中使用成员时,我们知道这是TextView,我们可以使用" setText()"方法,例如。不幸的名字很长,因为懒惰的程序员是优秀的程序员,这是它的缺点。
2
class SimpleActivity extends Activity {
private ImageView mUserProfileImage;
private TextView mUsernameText;
private Button mContinueButton;
}
这里我们有混合约定,我们仍然知道在代码中使用某个地方时它是什么类型的小部件,但是当我们有更复杂的小部件功能时,这些名称仍然太长了?
3。
class SimpleActivity extends Activity {
private ImageView mUserProfile;
private TextView mUsername;
private Button mContinue;
}
最懒的类别。
问题
您在代码中使用哪些命名约定以及您的体验是什么?也许有更好的约定,我没有提到?谷歌正在使用什么样的惯例?
答案 0 :(得分:4)
首先,' m'前缀用于AOSP源代码。 它不打算在Android应用中用作对话,因此我建议您将其删除(您可以阅读更多here)。
你的第三个选择是第一个消除;例如,mContinue
可以很容易地成为一个布尔变量,表示是否继续做某事,所以它绝对不是很可读。
在第一个选项和第二个选项之间,我仍然会选择第一个选项,因为它的可读性更高,而且作为OOP的一般规则,可读性比短名称更重要。此外,如果您移动视图'对其他类的自定义和数据绑定方法,您将在活动代码中拥有最少量的引用。