【发布时间】:2019-02-13 03:13:59
【问题描述】:
上面提到了 Kotlin 数据类用于存储数据。它相当于数据结构。因此,它不应该有任何行为方法。在干净的代码中,在数据类中实现行为方法会违反许多原则,即 SRP、OCP、...
我想知道fromJson 和toJson 方法是否被视为行为方法。如果是,那么我应该在我的代码中哪里实现这些方法?
我正在使用 Kotlin 数据类来存储用户、产品等。在我正在学习的所谓干净的架构和干净的代码中,我将这些数据类限制在仅用于存储域数据的角落。
我试图查找有关此的信息,但似乎找不到任何人谈论数据类和这些方法。
这是我想象的代码。应该是这样的。
data class User(val id: String, val name: String) {
fun toJson(): Json {}
fun fromJson(json: Json): User {}
}
或者我应该让其他类负责 toJson 和 fromJson 的实现?
【问题讨论】:
-
本身有一些函数,如
hashCode()、toString()、copy()。参考:kotlinlang.org/docs/reference/data-classes.html -
我认为这与我将要做的不同。这些功能不会改变,因此不会影响干净的代码或干净的架构。
-
不确定到底有多“干净”
-
只需使用jackson、gson 或kotlinx.serialization 之类的库。不要在数据类中创建
toJson或fromJson方法。如果您正在编写一个有时需要将对象转换为 json 的小型应用程序,这应该足够了。如果你在写一个web应用,那么你的framework应该支持json序列化,所有的序列化都由framework完成。
标签: kotlin coding-style clean-architecture