我們使用大小寫類來表示在客戶端和服務器之間傳輸的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我不認爲這有幫助。子類必須重新聲明構造函數的其他字段才能填充超類。除非我錯過了一些東西。 –