@@ -869,19 +869,54 @@ AS已帮你集成了一些注释模板,我们只需要直接使用即可,在
869869### 10 其他的一些规范
870870
8718711 . 合理布局,有效运用` <merge> ` 、` <ViewStub> ` 、` <include> ` 标签;
872+
8728732 . ` Activity ` 和` Fragment ` 里面有许多重复的操作以及操作步骤,所以我们都需要提供一个` BaseActivity ` 和` BaseFragment ` ,让所有的` Activity ` 和` Fragment ` 都继承这个基类。
873- 3 . 方法基本上都按照调用的先后顺序在各自区块中排列;
874- 4 . 相关功能作为小区块放在一起(或者封装掉);
875- 5 . 当一个类有多个构造函数,或是多个同名方法,这些函数/方法应该按顺序出现在一起,中间不要放进其它函数/方法;
876- 6 . 数据提供统一的入口。无论是在 MVP、MVC 还是 MVVM 中,提供一个统一的数据入口,都可以让代码变得更加易于维护。比如可使用一个` DataManager ` ,把 ` http ` 、` preference ` 、` eventpost ` 、` database ` 都放在` DataManger ` 里面进行操作,我们只需要与` DataManger ` 打交道;
877- 7 . 多用组合, 少用继承;
878- 8 . 提取方法, 去除重复代码。对于必要的工具类抽取也很重要,这在以后的项目中是可以重用的。
879- 9 . 可引入 Dagger2 减少模块之间的耦合性。Dagger2 是一个依赖注入框架,使用代码自动生成创建依赖关系需要的代码。减少很多模板化的代码,更易于测试,降低耦合,创建可复用可互换的模块;
880- 10 . 项目引入` RxJava ` + ` RxAndroid ` 这些响应式编程,可以极大的减少逻辑代码;
881- 11 . 通过引入事件总线,如:` EventBus ` 、` AndroidEventBus ` 、` RxBus ` ,它允许我们在` DataLayer ` 中发送事件,以便` ViewLayer ` 中的多个组件都能够订阅到这些事件,减少回调;
882- 12 . 尽可能使用局部变量;
883- 13 . 及时关闭流;
884- 14 . 尽量减少对变量的重复计算;
874+
875+ 3 . 启动` Activity ` 的话建议使用AS自带的模板,输入` starter ` 即可,如下所示:
876+
877+ ``` java
878+ public static void start(Context context, String data) {
879+ Intent starter = new Intent (context, MainActivity . class);
880+ starter. putExtra(" data" , data);
881+ context. startActivity(starter);
882+ }
883+ ```
884+
885+ 同理,启动` Fragment ` 输入` newInstance ` 即可,如下所示:
886+
887+ ``` java
888+ public static MainFragment newInstance(String data) {
889+ Bundle args = new Bundle ();
890+ args. putString(" data" , data);
891+ MainFragment fragment = new MainFragment ();
892+ fragment. setArguments(args);
893+ return fragment;
894+ }
895+ ```
896+
897+ 4 . 方法基本上都按照调用的先后顺序在各自区块中排列;
898+
899+ 5 . 相关功能作为小区块放在一起(或者封装掉);
900+
901+ 6 . 当一个类有多个构造函数,或是多个同名方法,这些函数/方法应该按顺序出现在一起,中间不要放进其它函数/方法;
902+
903+ 7 . 数据提供统一的入口。无论是在 MVP、MVC 还是 MVVM 中,提供一个统一的数据入口,都可以让代码变得更加易于维护。比如可使用一个` DataManager ` ,把 ` http ` 、` preference ` 、` eventpost ` 、` database ` 都放在` DataManger ` 里面进行操作,我们只需要与` DataManger ` 打交道;
904+
905+ 8 . 多用组合, 少用继承;
906+
907+ 9 . 提取方法, 去除重复代码。对于必要的工具类抽取也很重要,这在以后的项目中是可以重用的。
908+
909+ 10 . 可引入 Dagger2 减少模块之间的耦合性。Dagger2 是一个依赖注入框架,使用代码自动生成创建依赖关系需要的代码。减少很多模板化的代码,更易于测试,降低耦合,创建可复用可互换的模块;
910+
911+ 11 . 项目引入` RxJava ` + ` RxAndroid ` 这些响应式编程,可以极大的减少逻辑代码;
912+
913+ 12 . 通过引入事件总线,如:` EventBus ` 、` AndroidEventBus ` 、` RxBus ` ,它允许我们在` DataLayer ` 中发送事件,以便` ViewLayer ` 中的多个组件都能够订阅到这些事件,减少回调;
914+
915+ 13 . 尽可能使用局部变量;
916+
917+ 14 . 及时关闭流;
918+
919+ 15 . 尽量减少对变量的重复计算;
885920
886921 如下面的操作:
887922
@@ -894,12 +929,12 @@ AS已帮你集成了一些注释模板,我们只需要直接使用即可,在
894929 建议替换为:
895930
896931 ``` java
897- for (int i = 0 , int length = list. size(); i < length ; i++ ) {
932+ for (int i = 0 , len = list. size(); i < len ; i++ ) {
898933 ...
899934 }
900935 ```
901936
902- 15 . 尽量采用懒加载的策略,即在需要的时候才创建;
937+ 16 . 尽量采用懒加载的策略,即在需要的时候才创建;
903938
904939 例如:
905940
@@ -919,10 +954,13 @@ AS已帮你集成了一些注释模板,我们只需要直接使用即可,在
919954 }
920955 ```
921956
922- 16 . 不要在循环中使用try…catch…,应该把其放在最外层;
923- 17 . 使用带缓冲的输入输出流进行IO操作;
924- 18 . 尽量使用HashMap、ArrayList、StringBuilder,除非线程安全需要,否则不推荐使用Hashtable、Vector、StringBuffer,后三者由于使用同步机制而导致了性能开销;
925- 19 . 尽量在合适的场合使用单例;
957+ 17 . 不要在循环中使用try…catch…,应该把其放在最外层;
958+
959+ 18 . 使用带缓冲的输入输出流进行IO操作;
960+
961+ 19 . 尽量使用HashMap、ArrayList、StringBuilder,除非线程安全需要,否则不推荐使用Hashtable、Vector、StringBuffer,后三者由于使用同步机制而导致了性能开销;
962+
963+ 20 . 尽量在合适的场合使用单例;
926964
927965 使用单例可以减轻加载的负担、缩短加载的时间、提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:
928966
@@ -932,9 +970,11 @@ AS已帮你集成了一些注释模板,我们只需要直接使用即可,在
932970
933971 (3)控制数据的共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信
934972
935- 20 . 把一个基本数据类型转为字符串,` 基本数据类型.toString() ` 是最快的方式、` String.valueOf(数据) ` 次之、` 数据 + "" ` 最慢;
936- 21 . 使用AS自带的Lint来优化代码结构(什么,你不会?右键module、目录或者文件,选择Analyze → Inspect Code);
937- 22 . 最后不要忘了内存泄漏的检测;
973+ 21 . 把一个基本数据类型转为字符串,` 基本数据类型.toString() ` 是最快的方式、` String.valueOf(数据) ` 次之、` 数据 + "" ` 最慢;
974+
975+ 22 . 使用AS自带的Lint来优化代码结构(什么,你不会?右键module、目录或者文件,选择Analyze → Inspect Code);
976+
977+ 23 . 最后不要忘了内存泄漏的检测;
938978
939979---
940980
0 commit comments