Android 命名规范和编码规范

    xiaoxiao2021-03-25  65

    制定规范不需要太多的理论知识,只需记住两点即可:尽量简单,多写注释。

    Android 命名规范

    无规矩不成方圆。 命名规范有以下几点需要注意: 首先,命名规范不能反人类。 错误示例:PersonActivityAddCustomer.java 正确示例:AddCustomerActivity.java

    其次,要望文而知义,清晰准确。 eg:登录按钮命名:login_button(资源文件)或 btnLogin(Java代码中按钮实例)。

    最后,命名规范要做到简单易记,适可而止。

    下面说点具体的规则: 1)Java 类文件命名规范: Activity 命名规范:以 Activity 作为后缀。如:PersonActivity。 Adapter 命名规范:以 Adapter 作为后缀。如:PersonAdapter。 Entity 命名规范:打多以 Entity 作为后缀。如:PersonEntity。

    2)资源文件命名规范: layout 目录下的文件命名规范:

    页面布局文件。以 act_ 为前缀,以 Activity 所在的 Package 作为中缀,以 Activity 的名称(去掉 activity 后缀)作为后缀。注意都是小写。如:act_person_addcustomer.xml。ListView 中的 item 布局文件。以 item_ 作为固定前缀,列表项的名称为后缀。如:item_lv_userlist.xml。Dialog 布局文件。以 dlg_ 作为固定前缀。如:dlg_hint.xml 。

    drawable 目录下的文件命名规范: 建议:将 xml 文件放在 drawable 文件夹下,而图片统一放在 drawable-xxhdpi 文件夹下。

    对于只在一个页面使用的资源,就以该页面的名称作为前缀。对于只在一个模块下多个页面使用的资源,就以该模块的名称作为前缀。对于在各模块、各个页面都有可能使用的资源,以 common 作为前缀。

    3)Java 类中控件对象的命名规范。 m + 控件类型缩写 + 控件的逻辑名称(首字母大写),比如登录按钮 mBtnLogin

    4)Layout 中控件对象的命名规范。

    mRecyclerView = (RecyclerView)findViewById(R.id.recycler_view);

    5)strings.xml 中常量的命名规范。 因为这些值大多在 layout 中的控件上使用,所以以该常量所在的 Activity 名称作为前缀,后面接控件名称,再后面就自由发挥啦!如:loginActivity_btnLogin_text

    6)常量命名。 遵守 Java 的命名规范,即只能包含字母和下划线 _,字母全部大写,单词之间用下划线 _ 隔开。

    制定一套切实可行、易于遵守的命名规范,是每个 Team Leader 的必备技能。

    Android 编码规范

    1)要分门别类存放各种类,如下图:

    2)要怎么使用 findViewById 语句:

    private RecyclerView mRecyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initDatas(); mRecyclerView = (RecyclerView)findViewById(R.id.recycler_view); //瀑布流 StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL); mRecyclerView.setLayoutManager(manager); FruitAdapter adapter = new FruitAdapter(mInfos); mRecyclerView.setAdapter(adapter); }

    3)Layout 中的常量,要在资源 strings.xml 中定义。 以下的使用方式是错误的:

    <TextView android:text = "评论" ....../>

    我们要将“评论”这个常量定义在strings.xml 中:

    <resources> ... <string name="loginActivity_tv_text">评论</string> ... </resources>

    然后在 Layout 布局文件中这样使用:

    <TextView android:text = "@string/loginActivity_tv_text" ....../>

    4)Layout 中所有控件的字体大小和颜色,都定义在dimens.xml 和 colors.xml 中。

    5)在 Activity 中,定义新的生命周期,从而将 onCreate 方法拆分为以下 3 部分: initVariables:初始化变量(包括 Intent 上的数据和 Activity 内部使用的变量)。 initViews:加载 layout 布局文件,初始化控件。 loadData:调用 MobileAPI 。

    6)坚持使用 fastJSON 自定义实体来作为 MobileAPI 的数据载体。

    7)页面之间传值,坚持使用 Intent 携带序列化实体数据的方式。禁止为了省事使用变量进行传值的方式。

    8)为控件添加事件。统一使用如下方式:

    mListView = (ListView)findViewById(R.id.list_view); mListView.setAdapter(new CommonAdapter<Fruit>(this,R.layout.item_cinemalist,mInfos) { @Override protected void convert(ViewHolder viewHolder, Fruit item, int position) { viewHolder.setImageResource(R.id.fruit_image,item.getImageId()); viewHolder.setText(R.id.fruit_name,item.getName()); } }); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Toast.makeText(MainActivity.this,"点击了"+i,Toast.LENGTH_SHORT).show(); } });

    9)Activity 中不要嵌套内部类,尽量都独立出来,该放哪儿就放哪儿。

    10)Adapter 的编码规范如下: 所有的 Adapter ,都放在 adapter 这个包中。 Adapter 绑定数据,一律为 ArrayList<自定义可序列化实体>。 在 Adapter 中创建适合与列表自身的 ViewHolder 实体类。统一命名为 ViewHolder。

    11)实体不要在不同模块间共享,但是可以在同一模块下的不同页面间共享。

    12)为节省内存,请使用 ArrayList<自定义实体>,而不是 HashMap 。

    13)图片的处理,统一使用第三方组件 Glide ImageLoader 或者 Fresco 来进行异步加载。

    14)尽量使用 ApplicationContext 代替 Context,否则会引起内存泄漏。

    15)数据类型转换一定要进行校验。

    16)使用常量来代替枚举。总所周知,枚举的每个值只能是一个整数,而没有 toString 这样的方法,所以不如在类中定义一个字符串常量方便。

    Android开发规范:https://github.com/Blankj/AndroidStandardDevelop

    转载请注明原文地址: https://ju.6miu.com/read-39140.html

    最新回复(0)