我们使用大小写类来表示在客户端和服务器之间传输的JSON对象。除了我们已经生活了很长一段时间以外,它一直在努力工作,我想知道是否有人有一个聪明的方法。这可能会减少代码重复
比方说,我有一个用户对象具有ID,名字,姓氏和电子邮件地址。一旦用户被保存到数据库中,他有一个分配给他的id(Int
),因此对于处理现有用户的客户端和服务器之间的所有通信,该id是必填字段。事实上,只有一种情况是不需要id字段,那是用户第一次被保存的情况。我们目前正在处理这一问题的方法是用一个案例类,看起来像这样:
case class User(id: Option[Int], firstName: String, lastName: String, email:String)
在所有情况下,除了最初的保存,该ID是Some
并为初始保存ID始终None
所以我们发现自己使用id.getOrElse(0)
经常。 (有时候,我们会做一个.get
但感觉很脏。)
我很想有是有id: Int
领域的现有用户和没有id字段的对象在所有的新用户对象,但不宣所有其他领域在两个单独的案例分类中两次。但是,我看不到方便的方法。我也不喜欢为新用户的id字段使用'魔术'数字。
有没有人有更好的解决这个问题?
的方法之一是使用继承,即类用户没有ID,但InitializedUser从用户扩展添加这一个领域 –
同样的问题存在于数据库中。请查找Rob Norris的演讲“固定点类型的纯数据库编程”。 – ashawley
@Lashane我不认为这有帮助。子类必须重新声明构造函数的其他字段才能填充超类。除非我错过了一些东西。 –