姿势点
项目中使用
- @VisibleForTesting 然并卵
- parceler 非常实用的Parcelables工具类,很简洁的完成在Activity,Fragment,Service等组件中传递类。
- auto 谷歌的Auto集合其中AutoValue,AutoService,AutoFactory等
- fab the Floating Action Button for Android.
较冷门
- FindBugs
1. 比较详细的英文介绍
2. FindBugs-IDEA plugin for Intellij IDEA , Android Studio - Writing Unit Tests With Spock Framework
项目中有两处使用SpockFramework进行单元测试,Groovy不熟,还是感觉有点怪异。但是使用Gradle进行项目工程管理,Groovy必定有它过人之处,比如可以轻松的拿到项目工程各种参数,在编译前后插入或者提取想要的数据,那是相当easy的事情。
spock 比较OK的英文简介
def "getSignature should returned signature only"() {
given:
Project instance = new Project()
instance.urls = new ProjectUrls()
instance.urls.api = new ProjectUrlsApi()
instance.urls.api.project = "https://api.byoutline.com/v1/projects/866180756?signature=1427292197.67ec163ed8dbd36529f591b18fe0f7c4c5867ee1"
when:
Map<String, String> result = instance.getDetailsQueryMap()
then:
result == [signature: '1427292197.67ec163ed8dbd36529f591b18fe0f7c4c5867ee1']
}
实用的知识点
- 静态的Settings类管理全局设置的变量或类常用:
public static Context CONTEXT;
public static InputMethodManager INPUT_MANAGER;
public static Bus BUS;
private static String DATE_FORMAT_STRING = "dd/MM/yyyy";
-
PostFromAnyThreadBus.java
使用 new Handler(Looper.getMainLooper())).post(runnable) 全局处理UI线程任务。
项目中的难点
-
CachedField 使用泛化及函数编程,一开始接触,感觉各种人物关系相当的混乱。二舅老婆的妹妹的女儿的男朋友应该叫你什么,我当然机智的画了一下图:
CachedFiel.jpg - IBusCachedFieldWithArgBuilder 使用<转入参数,返回参数>泛化,直接通过Otto返回要处理的事件,顺便也能产生缓存,一下子把整个程序的框架清晰的解耦模块化。缺点还是增加应用的复杂度。
-
项目使用了Otto及泛化,使项目中的数据流比较隐晦。以ProjectListFragment为列,画图说话:
Data Flow Diagram.jpg - AndroidStubServer Simple Http server that makes simulating API easy. 在应用内搭建一个模拟服务器。目前能想到的好处有:
- 无网络或者网络环境差的情况下演示Demo;
- 在后台没有开发,前端工程师比较牛而且闲得蛋疼,先做后台玩玩。
网友评论