Java 库中类型转换的asX与toX前缀
我主要是一名Android开发人员,但我想同样的规则也应该适用于标准Java和KotlinJava 库中类型转换的asX与toX前缀,java,kotlin,android-library,Java,Kotlin,Android Library,我主要是一名Android开发人员,但我想同样的规则也应该适用于标准Java和Kotlin 选择作为(如asLiveData、asStateFlow)或作为(如toString)从一种类型转换为另一种类型的标准是什么 现在是我真正的问题。我制作了两个扩展函数,它们将字节数组转换为十六进制字符串,反之亦然。什么命名法更有意义 String.toByteArrayFromHexvsString.asByteArrayFromHex ByteArray.toHexStringvsByteArray
String.toByteArrayFromHex
vsString.asByteArrayFromHex
ByteArray.toHexString
vsByteArray.asHexString
我认为Kotlin标准库中的这些命名约定没有正式记录,但我注意到了一些相当常见的模式。例如:
-将对象转换为所需类型,并返回它(原始类型不变,独立于新类型)。这当然是最常见的示例to()
-返回对象的视图(不会立即更改原始视图;但是,稍后对对象状态的更改将反映在视图中,如果合适,反之亦然)。例如:as()
-在适当的位置变异对象(通常不返回任何内容)。例如:()
ed()
-表示如果没有可返回的有效值,则方法将返回null(而不是抛出异常或返回其他默认值)OrNull()
map()
和filter())
是动词,但不会变异其接收者。但是,它们早于Kotlin,因此可以理解,它们坚持使用已知的现有名称。JetBrains似乎更严格地遵守这些约定;例如,在Kotlin 1.4中,它们不赞成使用该函数,而赞成使用新名称。)
在您的示例中,
ByteArray.toHexString()
将是一个非常好的名称,因为它将数组转换为新类型,而不保留与原始类型的任何连接。我认为任何看到该名称的人都会立即知道它的作用(无论如何,或多或少;params或docs必须指定详细信息,例如它使用了什么分隔符(如果有),以及它是使用大写还是小写。)
类似地,String.toByteArrayFromHex()
比另一种方法清晰得多,尽管我不确定它读起来是否正确。那么String.hexToByteArray()
呢