代码整洁之道 - 格式

前言 好的软件系统是由一系列读起来不错的代码文件组成的,他们需要拥有一致和顺畅的风格。读者要能确信,他们在一个源文件中看到的格式风格在其他文件中也是同样的用法,绝对不要用不同的风格来编写源码,这样会增加其复杂度。 这个所谓的风格,其实就是指编码风格。每个团队在成立之初,都需要制定一种编码风格,由于这种风格是团队共同决定的,作为团队的一员,我们必须遵守这些规则 规则 我认为的规则应该有以下几条 代码格式化之后再提交,这个是关键,重中之重。 每一行字符的...

阅读更多

卧槽系列 - junit.framework.AssertionFailedError No tests found in ** 或许并不是你想的那样

我们知道,新建一个Android项目的时候,都会有下面红框中的文件, 虽然Android开发了有好几年了,可是一直都没用过,测试都是直接运行到手机中的,没写过测试用例的,没那个习惯,而且我一般都会把那几个文件给删掉的 可是今天一个偶然的机会,看到了写测试用例,然后就想着玩玩,可是我的项目中都已经没有这些东西了,没办法,重新添加一份吧。 红框中的就是新添加的部分。 想着没啥问题的,可是在MainPresenterTest类中 @RunWith(Moc...

阅读更多

卧槽系列 - Hilt遇到的 InstantiationException *** has no zero argument constructor

看到很多人都学习Jetpack,我也想着充充电,学习过程中知道了Hilt 这个库,觉得有点意思,就想着玩一把,刚开始以为很简单,不就是一个依赖注入,简单。 因为前段时间根据学习Android Jetpack? 实战和教程这里全都有!,这个把里面的demo敲了一遍,想着就直接在这上面改吧。 教程是根据Jetpack 新成员 Hilt 实践(一)启程过坑记 这个上面写的,博主写的很详细,而且里面写了好几个遇到的坑。想着有人已经踩过坑了,我就直接一路小跑,飞奔到Hil...

阅读更多

代码整洁之道 - 函数

这一章主要是说对函数的整洁 简单概况一下,一个整洁的函数包含以下几点 一个好函数名 只做一件事,并且做好这件事 短小精悍 参数尽量少 避免出现输出参数 避免重复代码 一个好函数名 好名称的标准:长而具有描述性的名称,要比短而令人费解的名称好,长而具有描述性的名称,要比描述性的长注释好。 使用某种命名规范,让函数名称的多个单次容易阅读。 一个好的函数名,应该能解释函数的意图,以及参数的顺序和意图 例如一元函数:函数和参数应该形成...

阅读更多

代码整洁之道 - 有意义的命名

记得几年前读了一点代码整洁之道,当时只是粗略的读,里面的内容都忘记了,这次重新读,为了保证不会再忘记里面的内容,特意做了一些笔记,方便查阅 总结 作为一个英文不好的码农,可能最挠头的一件事就是命名了。可是这有是我们每天不得不面对的一个问题,怎么才能取一个好的命名呢?通过读这本书,我认为需要满足以下几点。 足够清楚表达意思,让人一目了然,并且不能有歧义。 尽量短小,如果短名称表达不清楚意思,就加长。 不加无用的前缀,语境 名称之间要有明显的区分 ...

阅读更多

扫盲系列 - Kotlin 中的标准库函数 it、run、with、let、also和apply、use

刚学习kotlin的时候,会发现一些奇怪的语法,例如 var dints2=ints.map{ it*2} File("test.txt").let { } 等等,这些感觉好奇怪的,和java区别很大的,这些到底是啥呢, 在学习这些之前,我们先大概了解一下什么是lambda表达式 lambda表达式 目的是为了更贴近函数式编程,把函数作为参数的思想 格式:{(输入参数)-> (运算)输出} 最外面使用{},用()定义参数列表,箭头-&g...

阅读更多

源码分析 - Glide4 之 缓存原理

概况 Glide 缓存分两个模块: 内存缓存和硬盘缓存 内存缓存 作用:防止应用重复的把图片读取到内存中。 分为两层 弱引用缓存:正在使用的图片使用弱引用缓存,这样的目的保护正在使用的资源不会被 LruCache 算法回收。 LruCache缓存:不再使用的图片使用 LruCache 缓存,这是一个强引用缓存 硬盘缓存 作用:防止应用重复的从网络或者其他地方下载和读取数据。 分为两层 ...

阅读更多

源码分析 - LeakCanery

使用 添加依赖 dependencies { debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5' releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5' testImplementation 'com.squareup.leakcanary:leakcana...

阅读更多