我們有一個 Java 服務,可以處理大量用戶上傳的文件,以及為不同模型執行準備這些文件的任務。其中一個準備階段包括覆蓋 json 文件中的值。十分之四的任務應該執行此操作。我創建了一個靜態實用程序類,其中包含一個函數來覆蓋 json 文件中的值,例如public static class ParameterUtils { public static String overrideParameter(String originalContent, String key, String newValue) { //4 lines of code that overrides this value and return modified content. }}然而,我的高級開發人員說這個實用程序類幾乎沒有提供任何價值,而我試圖保留 DRY 原則。最后我確實擺脫了這個實用程序類,現在覆蓋 json 文件中的值的 4 行代碼駐留在 4 個不同的文件中。從OOP的角度來看,你認為這個類和方法不好嗎?為什么以及為什么不呢?
1 回答

慕村9548890
TA貢獻1884條經驗 獲得超4個贊
不,在多個地方重復(稍微復雜)代碼絕對是不好的做法。
DRY 原則說的是“不要重復自己”。這是需要記住的事情,您不想通過指示計算機多次覆蓋此參數來重復自己。
然而,可能有比只有一個方法的靜態實用程序類更好的地方來放置它。
如果您使用它的 4 個文件都擴展了某個類,則可以將其設置為受保護的靜態方法?;蛘咭苍S將它放在返回 JSON 字符串的類中。
然而,將 JSON 作為字符串傳遞似乎有一種代碼味道,特別是當您通過字符串操作來操作它時。使用 JSON 庫(例如 Jackson 或 org.json)可能是個好主意。如果您使用 Jackson 的數據綁定功能(使用 Jackson 的最流行方式),您將創建一個具有實際 getter 和 setter 的 POJO,Jackson 負責將其轉換為 JSON。就 org.json 而言,您使用一個與JSONObject
a 非常相似的類Map<String, Object>
,并且可以像處理映射一樣對其進行變異,并且可以使用單個方法將其與 String 相互轉換。
添加回答
舉報
0/150
提交
取消