@linux1s1s
2020-12-02T18:59:50.000000Z
字数 2123
阅读 704
Tips
请务必按照以下约束严格要求
// 添加滚动条目,下面代码放入AS,会有黄色波浪线,请修改完再提交
private fun addScrollitem(
rowNumber: Int,
dataBeans: ArrayList<HotBannerDataBean>,
listStyle: Int
) {...}
// 下面代码放入AS,var会有黄色块,建议修改为val
var layoutparams: RelativeLayout.LayoutParams = img.layoutParams as RelativeLayout.LayoutParams
比如
com.yonghui.yhd.xxx
,不鼓励使用多个词,如果使用多个词,请全部小写,比如cn.yonghui.hyd.category.business.newcategory
open class DeclarationProcessor { ... }
object EmptyDeclarationProcessor : DeclarationProcessor() { ... }
fun processDeclarations() { ... }
Good
private var toolbarTitle: Int = 0
Bad
fun setData(products: ArrayList<HotSuggestProductDataBean>?, mCartView: View?){...}
类的名称通常是用来解释类是什么的名词或者名词短语:List、 PersonReader。
方法的名称通常是动词或动词短语,说明该方法做什么:close、 readPersons。
当使用首字母缩写作为名称的一部分时,如果缩写由两个字母组成,就将其大写(IOStream
); 而如果缩写更长一些,就只大写其首字母(XmlFormatter、 HttpInputStream
)
新增类或者方法,请使用ktlint插件格式化
if (string.isEmpty()) return
val value = if (a == b) 0 else 1
when (value) {
0 -> return
// …
}
Good
val myValue = if (condition) {
0
} else {
1
}
Bad
val myValue = if (condition)
0
else
1
通常,一个类的内容按以下顺序排列:
不要按字母顺序或者可见性对方法声明排序,也不要将常规方法与扩展方法分开。而是要把相关的东西放在一起,这样从上到下阅读类的人就能够跟进所发生事情的逻辑。选择一个顺序(高级别优先,或者相反)并坚持下去。
将嵌套类放在紧挨使用这些类的代码之后。如果打算在外部使用嵌套类,而且类中并没有引用这些类,那么把它们放到末尾,在伴生对象之后。
方法里的参数要声明为可空类型,防止由于运行时数据为空或Kotlin与Java代码相互调用产生IllegalStateException异常导致Crash
对于Java中要求强制加try-catch
的场景,编译器不会自动提示,需要我们自己加上,如:new JSONObject("xxx"),xx.toInt()
等
I/O
操作及加锁
操作或可能出现内存泄露的场景,必须使用finally
语句进行处理
建议所有进行类型转换的操作,都使用as?
,以防止类型不匹配导致的异常问题
class MyFragment : Fragment() {
// Good
(context as? Activity)?.finish()
// Not Good
(context as Activity).finish()
}
!!
修饰lateinit
来定义不可空类型的变量,可能会在使用时出现null的情况
private val lazyImmutableValue: String by lazy {
"Hello"
}
private val lazyImmutableValueNoThreadSafe: String by lazy(LazyThreadSafetyMode.NONE) {
"Hello"
}