唯品会那会,技术分享,正愁主题。刷圈看到老大分享的技术文章,关于kotlin的。猎奇之后,哎哟,挺好玩的。
庞然大物的转身往往缓而稳,所以,只是玩玩而已,一阵子过后,早已九霄云外。
三月,CTO面试问,对新技术有什么涉猎的。答kotlin。
五月,Google IO宣布kotlin 成为Android平台一级编程语言。
如今,从模块kotlin化到统一采用kotlin开发新项目,已经有三个项目了。算是有了一些实践。
诚然如大家说的,都是一些语法糖。但码码的速度实实在在的提升了。而且更重要的是,重新觉得码码是挺好玩的。
场景一:Java定义并初始化控件。
应该算是常见的写法。然而,一旦控件数量增多,会有各种 init(),懒起来时,全扔在 initViews()里。即使用上butterknife等注解。也避免不了因控件数量增多导致的初始化方法增多或者堆代码现象。
kotlin呢?
其实没什么区别。但会发现,不会有各种 init() 方法的出现或者往 initViews() 堆代码的现象。甚至提供的完整的理解 - smoothRefreshLayout 这个控件支持 上拉刷新&下拉加载更多。 或者说kotlin是完整的定义。而Java是不完整的,先定义,再设置,引用时最好还要判空,还不是懒加载。
场景二:Java Builder模式
代码不太规范,但也足以说明问题。Builder模式某种意义上说,就是通过链式调用组合各种属性。规范的Builder模式的代码量远不止如此。
kotlin呢?
apply{} 让 builder 模式没有存在的意义。也就不需要 return this 了。
场景三:Java CallBack接口
想回调下?走接口。简单的CallBack例子,便要如此大费周章。曾经多少个夜晚,默默码了一遍遍回调。
kotlin呢?
没错。就这样,将方法当参数传入直接调用。如此简单明了,不仅仅是语法糖的味道而已。实际应用没这么简单,比如接口里有各种回调方法。但方法作为参数对于Javaer 来说,简直是历史壮举了。
场景四:Java 嵌套类属性的调用(各种判空)
例子其实不极端,而是很频繁的现象。为了避免空指针,只能一层层的进行判空操作。
kotlin呢?
最后一句,酷炫得无话可说有没有? 港真,自从用上了kotlin,已经很少写 if (xxx != null) 这行代码了。
场景五:Java 多参数方法重载
常见现象之一,一个参数齐全的方法,通过重载与默认值,实现几个不同入参的方法。一个事儿,啰哩啰嗦一大堆,却又无法避免。还不清晰。想看真正的实现方法,时常需要通过 ctrl + click 不停的跟踪下去。
kotlin呢?
怎么也算是超过语法糖的范围了吧。简单明了,以不变应万变。一个字,老铁,稳。
夜已深,有点困。今晚就到这先