From f2fd7ce6511825536ddcc04544cb2828a752abd0 Mon Sep 17 00:00:00 2001 From: freedomu <1072672770@qq.com> Date: Sat, 23 Jul 2016 08:37:17 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E5=9C=A8?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E5=99=A8=E6=98=BE=E7=A4=BA=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E9=94=99=E4=B9=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...00\345\217\221\350\247\204\350\214\203.md" | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git "a/1 android\344\272\247\345\223\201\347\240\224\345\217\221-\345\256\236\347\224\250\345\274\200\345\217\221\350\247\204\350\214\203.md" "b/1 android\344\272\247\345\223\201\347\240\224\345\217\221-\345\256\236\347\224\250\345\274\200\345\217\221\350\247\204\350\214\203.md" index 3a1eff4..76e8ce6 100644 --- "a/1 android\344\272\247\345\223\201\347\240\224\345\217\221-\345\256\236\347\224\250\345\274\200\345\217\221\350\247\204\350\214\203.md" +++ "b/1 android\344\272\247\345\223\201\347\240\224\345\217\221-\345\256\236\347\224\250\345\274\200\345\217\221\350\247\204\350\214\203.md" @@ -38,8 +38,10 @@ * 1. 全部为大写字母; * 2. 中间以“_”连接; * 3. 望文知意原则; + ####2.1.4 备注 代码中涉及到直接使用某个字符串或者其他基本类型的值时,建议定义成常量,避免多处直接使用同样的值作为参数。 + ####2.1.5 举例 * 如:定义一个常量表示最小屏幕宽度的常量,则可以定义一个int类型的常量,该常量可以命名为:“MIN_SCREEN_WIDTH“; * 其他举例: @@ -61,8 +63,9 @@ 3. 望文知意原则; 4. 推荐引用类型变量添加前缀“m”; 5. 如果是View组件变量,则组件名称为xml文件中定义的ID名称去掉下划线,下划线后一位大写; + ####2.2.4 备注 -无 +无 ####2.2.5 举例 * 如:定义一个表示最小屏幕宽度的变量,则可以定义一个int型的临时变量为:mMinScreenWidth; * 例如:static final int mMinScreenWidth = 4; ( √) @@ -83,9 +86,11 @@ 2. java驼峰命名; 3. 简单明了原则; 4. 初始化View方法init*(每个init做一件事) + ####2.3.4 备注 * 同时在方法的实现上,尽量不要在一个方法中出现太多实现代码,如一个方法有几百行的实现逻辑,推荐在逻辑复杂时,按功能点拆分出多个方法,便于阅读。 * 另外,出现功能一样的实现逻辑,尽量抽取公用方法,避免将实现逻辑复制到多个用到的地方。 + ####2.3.5 举例 * 如:定义一个获取屏幕宽度的方法,依照上述原则,则可以定义为一个静态方法:public static int getScreenWidth(); * 例如:public static int getScreenWidth();( √) @@ -116,8 +121,10 @@ 12. 自定义Adapter类以Adapter结尾; 13. adapter中的ViewHolder以Holder结尾; 14. 实体Bean以Model结尾; + ####2.4.4 备注 无 + ####2.4.5 举例 * 如:定义一个获取屏幕信息的工具类,则可以定义为public class ScreenUtils; * 例如:public class ScreenUtils; ( √) @@ -138,10 +145,12 @@ 2. java驼峰命名; 3. 望文知意原则; 4. 建议在名称前面追加“I”; + ####2.5.4 备注 * I**Listener * I**CallBack * I**; + ####2.5.5 举例 * 如:定义一个activity的方法接口,实现接口中的某些方法:public interface IFunctionListener; @@ -171,8 +180,10 @@ 11. 网络类相关的可以划分为,network,放一些网络相关的类; 12. Fragment类存放在fragment包下; 13. Activity类存放在Activity包下; + ####2.6.4 备注 无 + ####2.6.5 举例 无 @@ -186,8 +197,10 @@ 2. 简单明了; 3. 望文知意; 4. 驼峰表示; + ####2.7.4 备注 无 + ####2.7.5 举例 * 后期增加目录的可能性不多,现列举出系统中存在的目录结构: * lib:第三方jar的保存路径; @@ -208,8 +221,10 @@ 6. activity类的xml文件名称:类名_activity.xml; 7. fragment类的xml文件名称:类名_fragment.xml; 8. 自定义View的xml文件的名称:类名_父类名.xml; + ####2.8.4 备注 无 + ####2.8.5 举例 如:如定义H5Activity的xml文件名称,则可以定义为h5.xml;尽量不使用大写字母等。 @@ -239,12 +254,14 @@ drawable文件名称命名规范 1. 全部为小写字母; 2. 中间以"_"连接; 3. 望文知意原则; + ####2.10.4 备注 可以考虑按照组件的名称的缩写作为前缀,(同一个xml文件中ID名称不能重复)如:组件简写(大写字母缩写)_业务名称 TextView的组件:tv_pay_money Button的组件:btn_pay_money EditText的组件:et_user_name LinerLayout组件:ll_container + ####2.10.5 举例 如:比如一个textview组件,可点击用于支付的按钮,则可以把ID定义为: tv_pay_money; From 7342d0ccdbfc19f81fd9903d858c06b7ddb65f03 Mon Sep 17 00:00:00 2001 From: freedomu <1072672770@qq.com> Date: Sat, 23 Jul 2016 08:44:15 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=88=AA=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "QQ\346\210\252\345\233\27620160723084324.png" | Bin 0 -> 13889 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "QQ\346\210\252\345\233\27620160723084324.png" diff --git "a/QQ\346\210\252\345\233\27620160723084324.png" "b/QQ\346\210\252\345\233\27620160723084324.png" new file mode 100644 index 0000000000000000000000000000000000000000..06c4a49b35e05d26c594648604be236412c6a159 GIT binary patch literal 13889 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