0
此問題已被編輯以詢問有關具體示例,因爲原始問題被視爲無法回答。將對象或值傳遞給函數
給定一個需要顯示有關各種對象(包括相似和繼承對象)信息的應用程序,最好是將基類對象傳遞給顯示函數並允許它查詢對象以確定要顯示的數據;或者你應該通過價值傳遞每個字段。通過值傳遞的優點不需要直接依賴於它們所代表的對象,從而使顯示(UI)與業務規則對象保持隔離。
此問題已被編輯以詢問有關具體示例,因爲原始問題被視爲無法回答。將對象或值傳遞給函數
給定一個需要顯示有關各種對象(包括相似和繼承對象)信息的應用程序,最好是將基類對象傳遞給顯示函數並允許它查詢對象以確定要顯示的數據;或者你應該通過價值傳遞每個字段。通過值傳遞的優點不需要直接依賴於它們所代表的對象,從而使顯示(UI)與業務規則對象保持隔離。
一般而言,您應該傳遞方法完成工作所需的最少量信息。例如,如果某個方法根據出生日期計算某個人的年齡,則不需要傳入整個Person對象,只需要該人的出生日期和當前日期。
通過遵循上述方法,您可以保持方法loosely coupled,這使得它們更易於維護。
就你而言,你必須平衡你是否需要訪問這些方法中很多基類的字段,或者如果你只需要訪問幾個。如果它有很多字段,那麼傳遞整個對象可能更有意義。這是一種良好耦合(參見本答案的第一部分)之間的平衡行爲,但同時避免將大量參數傳遞給方法。
「這取決於」,非常*不*語言不可知:一般功能很好,但不一定會覆蓋其他合同。 – 2011-11-19 02:39:56
這不是建設性的(意味着不可回答)。這就像「有什麼更好 - 汽車還是卡車?」 - 正確的答案取決於你是否需要在舒適或乾草堆中拖拉人。 「什麼更好?一隻狗還是一隻貓?」取決於你是否試圖擺脫老鼠,或者你想有一隻寵物玩耍並保護你的房子。投票結束。抱歉。 :) –
感謝您的反饋,我改變了這個問題,以反映過去我一直在努力的一個具體例子。希望有所幫助。 – TownCube