簡體   English   中英

值得在DTO中使用getter和setter嗎? (C ++)

[英]Worth using getters and setters in DTOs? (C++)

我必須編寫一堆DTO(數據傳輸對象),它們的唯一目的是在客戶端應用程序和服務器應用程序之間傳輸數據,因此它們具有一堆屬性,一個序列化功能和一個反序列化功能。

當我看過DTO時,他們經常會有getter和setter,但是對於這類課程,他們有什么意義嗎? 我確實想知道是否要在方法中進行驗證或進行計算,但是我可能沒有考慮,因為這似乎超出了它們的用途范圍。

在服務器端,業務層處理邏輯,而在客戶端,DTO將僅用於視圖模型(並將數據發送到服務器)。

假設我正確地處理了所有這些問題,人們會怎么想?

謝謝!

編輯:並且如果是這樣,將get / set實現放入類定義中會不會有問題? 將重復的內容保存在cpp文件中...

如果您有一個類的明確目的只是要將其成員變量存儲在一個地方,則最好將它們全部公開。

該對象可能不需要析構函數(僅在需要清理資源(例如指針)的情況下才需要析構函數,但是如果要序列化指針,則只是在問麻煩)。 有一些語法糖構造函數可能很不錯,但實際上沒有必要。

如果數據只是用於攜帶數據的普通舊數據(POD)對象,則它是結構(完全公共類)的候選對象。

但是,根據您的設計,您可能需要考慮添加一些行為,例如.action()方法,該行為知道如何將其承載的數據集成到實際的Model對象中。 而不是讓實際模型本身集成這些更改。 實際上,可以將DTO視為控制器(輸入)的一部分,而不是模型(數據)的一部分。

在任何情況下,無論哪種語言,吸氣劑/裝填劑都是封裝不良的標志。 每個實例字段都具有一個getter / setter方法不是OOP。 對象應該豐富,而不是Anemic 如果您確實需要一個貧血對象,則跳過獲取/設置程序,直接進入POD完全公共結構; 與完全公開的結構相比,使用getter / setter幾乎沒有好處,除了它會使代碼復雜化,因此,如果您的工作場所使用代碼行作為生產力指標,它可能會給您更高的評價。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM