Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该在Kotlin数据类中写入toJson还是fromJson方法?_Kotlin_Coding Style_Clean Architecture - Fatal编程技术网

我应该在Kotlin数据类中写入toJson还是fromJson方法?

我应该在Kotlin数据类中写入toJson还是fromJson方法?,kotlin,coding-style,clean-architecture,Kotlin,Coding Style,Clean Architecture,前面提到,Kotlin数据类用于存储数据。它相当于数据结构。因此,它不应该有任何行为方法。在干净的代码中,在数据类中实现行为方法将违反许多原则,即SRP、OCP、 我想知道fromJson和toJson方法是否被视为行为方法。如果是,那么我应该在我的代码中在哪里实现这些方法呢 我使用Kotlin数据类来存储用户、产品等。在我正在学习的所谓干净的体系结构和干净的代码中,我将这些数据类限制在只存储域数据的角落 我试图找到这方面的信息,但似乎找不到任何人谈论数据类和这些方法 这是我想象的代码。应该是这

前面提到,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的实现吗?

因为您已经用干净的体系结构标记了您的查询,我想您是指这个体系结构的

从这个角度来看,“域实体”应该独立于任何类型的序列化格式、持久性方面或其他特定的“技术”或“框架”


处理域对象“持久性忽略”的一个常见模式是存储库模式。在clean体系结构的上下文中,这里需要记住的一个重要方面是,存储库的接口是在“用例层”(业务逻辑)中定义的,而实现是在“网关层”甚至是“框架层”。

本身有一些函数,例如
hashCode()
toString()
copy()
。我认为这与我将要做的不同。这些函数不会更改,因此不会影响干净的代码或干净的体系结构。不确定“干净”的程度只是使用库,如或。不要在数据类中创建
toJson
fromJson
方法。如果您正在编写一个有时需要将对象转换为json的小应用程序,这就足够了。如果您正在编写一个web应用程序,那么您的框架中应该支持json序列化,所有的序列化都应该由框架完成。仅供参考,如果您想走这条路,Gson作者推荐使用。