diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..750e8ac --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/donate.png diff --git a/README.md b/README.md index f23a64a..c83b895 100755 --- a/README.md +++ b/README.md @@ -271,7 +271,7 @@ public class MyClass { ##### 3.5.2 Type0(控件类型) -考虑到 Android 众多的 UI 控件,为避免控件和普通成员变量混淆以及更好地表达意思,所有用来表示控件的成员变量统一加上控件缩写作为前缀(具体见附录[UI 控件缩写表](#ui-控件缩写表))。 +考虑到 Android 众多的 UI 控件,为避免控件和普通成员变量混淆以及更好地表达意思,所有用来表示控件的成员变量统一加上控件缩写作为前缀(具体见附录 [UI 控件缩写表](#ui-控件缩写表))。 例如:`mIvAvatar`、`rvBooks`、`flContainer`。 @@ -460,7 +460,7 @@ public void loadUserAsync(Context context, int userId, UserCallback callback); #### 4.5 字符串常量的命名和值 -Android SDK 中的很多类都用到了键值对函数,比如`SharedPreferences`、`Bundle`、`Intent`,所以,即便是一个小应用,我们最终也不得不编写大量的字符串常量。 +Android SDK 中的很多类都用到了键值对函数,比如 `SharedPreferences`、`Bundle`、`Intent`,所以,即便是一个小应用,我们最终也不得不编写大量的字符串常量。 当时用到这些类的时候,我们 **必须** 将它们的键定义为 `static final` 字段,并遵循以下指示作为前缀。 @@ -621,7 +621,9 @@ public Observable syncLocations() { 资源文件命名为全部小写,采用下划线命名法。 -如果想对资源文件进行分包可以参考我这篇文章:**[Android Studio 下对资源进行分包][Android Studio 下对资源进行分包]**。 +如果是组件化开发,我们可以在组件和公共模块间创建一个 ui 模块来专门存放资源文件,然后让每个组件都依赖 ui 模块。这样做的好处是如果老项目要实现组件化的话,只需把资源文件都放入 ui 模块即可,如果想对资源文件进行分包,可以参考我这篇文章:**[Android Studio 下对资源进行分包][Android Studio 下对资源进行分包]**;还避免了多个模块间资源不能复用的问题。 + +如果是三方库开发,其使用到的资源文件及相关的 `name` 都应该使用库名作为前缀,这样做可以避免三方库资源和实际应用资源重名的冲突。 #### 5.1 动画资源文件(anim/ 和 animator/) @@ -654,7 +656,9 @@ public Observable syncLocations() { 专门存放颜色相关的资源文件。 -命名规则:`类型_逻辑名称`。 +命名规则:`类型{_模块名}_逻辑名称`。 + +说明:`{}` 中的内容为可选。 例如:`sel_btn_font.xml`。 @@ -862,7 +866,7 @@ public Observable syncLocations() { #### 5.7 id 命名 -命名规则:`view缩写{_模块名}_逻辑名`,例如: `btn_main_search`、`btn_back`。 +命名规则:`view 缩写{_模块名}_逻辑名`,例如: `btn_main_search`、`btn_back`。 如果在项目中有用黄油刀的话,使用 AS 的插件:ButterKnife Zelezny,可以非常方便帮助你生成注解;没用黄油刀的话可以使用 Android Code Generator 插件。 @@ -958,7 +962,7 @@ public static byte[] bitmap2Bytes(Bitmap bitmap, CompressFormat format) { #### 8.3 块注释 -块注释与其周围的代码在同一缩进级别。它们可以是 `/* ... */` 风格,也可以是 `// ...` 风格(**`//`后最好带一个空格**)。对于多行的 `/* ... */` 注释,后续行必须从 `*` 开始, 并且与前一行的 `*` 对齐。以下示例注释都是 OK 的。 +块注释与其周围的代码在同一缩进级别。它们可以是 `/* ... */` 风格,也可以是 `// ...` 风格(**`//` 后最好带一个空格**)。对于多行的 `/* ... */` 注释,后续行必须从 `*` 开始, 并且与前一行的 `*` 对齐。以下示例注释都是 OK 的。 ```java /* @@ -998,7 +1002,7 @@ AS 已帮你集成了一些注释模板,我们只需要直接使用即可, 测试函数被 `@Test` 所注解,函数名通常以被测试的方法为前缀,然后跟随是前提条件和预期的结果。 -* 模板:`void methodName前提条件和预期结果()` +* 模板:`void methodName 前提条件和预期结果()` * 例子:`void signInWithEmptyEmailFails()` > 注意:如果函数足够清晰,那么前提条件和预期的结果是可以省略的。 @@ -1023,7 +1027,7 @@ AS 已帮你集成了一些注释模板,我们只需要直接使用即可, 5. 当一个类有多个构造函数,或是多个同名函数,这些函数应该按顺序出现在一起,中间不要放进其它函数; -6. 数据提供统一的入口。无论是在 MVP、MVC 还是 MVVM 中,提供一个统一的数据入口,都可以让代码变得更加易于维护。比如可使用一个 `DataManager`,把 `http`、`preference`、`eventpost`、`database` 都放在 `DataManager` 里面进行操作,我们只需要与 `DataManager`打交道; +6. 数据提供统一的入口。无论是在 MVP、MVC 还是 MVVM 中,提供一个统一的数据入口,都可以让代码变得更加易于维护。比如可使用一个 `DataManager`,把 `http`、`preference`、`eventpost`、`database` 都放在 `DataManager` 里面进行操作,我们只需要与 `DataManager` 打交道; 7. 多用组合,少用继承; @@ -1189,6 +1193,7 @@ AS 已帮你集成了一些注释模板,我们只需要直接使用即可, ## 版本日志 +* 17/12/08: 新增组件化和三方库开发资源文件规范; * 17/12/05: 新增 logo; * 17/12/04: 完善按功能分包,修复 typo,定该版为完结版; * 17/12/03: 完善代码样式规范和测试规范; @@ -1202,6 +1207,11 @@ AS 已帮你集成了一些注释模板,我们只需要直接使用即可, * 17/03/06: 发布初版; +## 打个小广告 + +欢迎加入我的小专栏「**[基你太美](https://xiaozhuanlan.com/Blankj)**」一起学习。 + + [logo]: https://raw.githubusercontent.com/Blankj/AndroidStandardDevelop/master/art/logo.png [Package by features, not layers]: https://medium.com/@cesarmcferreira/package-by-features-not-layers-2d076df1964d#.mp782izhh @@ -1228,7 +1238,7 @@ AS 已帮你集成了一些注释模板,我们只需要直接使用即可, [Android 包命名规范]: http://www.ayqy.net/blog/android%E5%8C%85%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83/ [Android 开发最佳实践]: https://github.com/futurice/android-best-practices/blob/master/translations/Chinese/README.cn.md [Android 编码规范]: http://www.jianshu.com/p/0a984f999592 -[阿里巴巴 Java 开发手册]: https://github.com/alibaba/p3c/blob/master/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4Java%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C%EF%BC%88%E7%BA%AA%E5%BF%B5%E7%89%88%EF%BC%89.pdf +[阿里巴巴 Java 开发手册]: https://github.com/alibaba/p3c/blob/master/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4Java%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C%EF%BC%88%E8%AF%A6%E5%B0%BD%E7%89%88%EF%BC%89.pdf [Project and code style guidelines]: https://github.com/ribot/android-guidelines/blob/master/project_and_code_guidelines.md [Google Java 编程风格指南]: http://www.hawstein.com/posts/google-java-style.html [小细节,大用途,35 个 Java 代码性能优化总结!]: http://www.jianshu.com/p/436943216526