经验小结-持续更新

1、能用Application Context就尽量使用。(2022.1.7)

相较于 Activity等,可以提高代码的聚合度。

2、要善于抽取工具类。(2022.1.7)

比如,在开发 WIFI 功能时,这行代码经常用到:

val wifiManager = 
        context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager?

这样就可以提取出工具类,如下:

class SystemServiceHelper {
    companion object {
        private const val TAG = "SystemServiceHelper"

        /**
         * 获取 WIFI 服务
         */
        fun getWifiService(): WifiManager? {
            val wifiManager =
                AppContext.appContext!!.getSystemService(Context.WIFI_SERVICE) as WifiManager?
            if (wifiManager == null) {
                Log.e(TAG, "WifiManager is null")
            }
            return wifiManager
        }
    }
}

这么做至少有三个好处:
1)使用简单了,代码的复杂度降低了。
2)结合小结的第一条,对 context 的依赖更加容易了。
反之,可能会需要一直取context,或者通过参数传context,很不简洁。
3)当 Wifimanager 为 null 时,有统一的地方来查看。

3、要多重构(2022.1.7)

这个过程不仅可以提高代码质量,还可以加深对代码逻辑(流程)的梳理,或许在进行的时候,就会想到更佳的实现方案。

4、在使用任何技术前,看一下官方的开发指南总是好的。(2022.1.8)

https://developer.android.google.cn/guide

5、在进行IO操作时,不要在负责传输的线程中进行任何解析,这样可以避免解析产生错误时,对IO线程产生影响。正确的做法应该是分发到其他线程处理。(2022.1.14)

要尽可能的保证各个模块(我认为任何一个方法、类、线程、进程、Service、Module、三方库等都可以称其为一个模块)的职责单一化。这样对系统的调试、单元测试、可靠性、稳定性都有好处。

6、当创建一个类(方法、模块)时,第一件事,不妨把这个类(方法、模块)要做的事情先清楚的写出来。(这样做,有利于自己再一次的思考代码的设计是否合理。)当这个类要做的事情超过2-3件(方法、模块1-2件就应该小心)时,就应该小心了,它是否已经职责不单一了?是否已经开始耦合了?(2022.1.24)

7、简洁有效

能用一行代码写完的,绝不用两行。就像写文章与说话一样,少说废话,除非有需要。

8、对于三方库的引用应该加(抽象出)一个中间层

9、对外提供的东西,一定要进行充分验证后才能给出。比如apk、相关文档等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容