我想知道是否有任何最佳實踐或規則可以幫助確定是否允許從對象根目錄進行深度導航。到目前爲止,我幾乎總是傾向於隱藏所有的實現細節,但它可能是矯枉過正的。何時允許深層對象導航以及何時避開它?
通過深層導航,我的意思是類似於httpResponse.status().text()
而不是httpResponse.statusText()
考慮到HttpResponse
封裝了HttpStatus
對象。
後者完全隱藏實現細節,但也需要更多的代碼。我知道這個例子可能過於簡單,並且除了阻止null
狀態之外,沒有不變式可以強制執行,但它足以揭示問題。
請注意,我們可以認爲HttpStatus
是不可變的例子。
它可能不是最好的例子,但我們也可以使用任何組合用於繼承的例子。
我的第一個問題就是,爲什麼你會想要這樣做? – mituw16
@ mituw16,做什麼?整個http事物只是一個構圖的例子。 – plalx
我明白,我不明白爲什麼會在示例中想要允許或不允許對象導航。在我看來,編寫任何對象的最佳方式是以合理和高效的方式對它們進行編碼。想想這樣,通過輸入'httpResponse.StatusText()'與'httpResponse.status()。text()'來獲得什麼好處呢?在這種情況下,我個人認爲這將會是過分的,因爲你將不得不編寫更多的代碼來隱藏'.text()'方法。但是,這只是我的意見 – mituw16