2017-05-06 40 views
0

我正在開發一個Android庫,其中一個模型有一些我希望用戶有權訪問的公共字段。班級及其字段標記爲公開。但是,我收到了一條警告:「訪問可以是私人的」。如何避免在圖書館模塊公共領域的棉絨檢查?

有沒有辦法讓我處理這個問題,而不是簡單地忽略它或使用@SuppressWarnings("WeakerAccess")

+0

請注意,在類中使用公共字段被認爲是糟糕的設計,特別是如果它是一個庫類。它將你與永遠保持領域聯繫起來,防止內部實現的變化。改爲爲這些字段提供訪問器方法。 –

+0

使用setters和getters。 –

+0

@AndyTurner訪問器是有意義的,不能相信我對此留下了深刻的印象。但是,現在lint警告我「Method'getName()'從不使用」。有沒有辦法處理這個問題,而不是壓制警告?我可以讓Android Studio知道它是我正在創建的庫,因此它不會執行公共方法的這些檢查嗎? – fsociety

回答

1

如果它告訴你可以將字段設置爲私有,那是因爲你沒有訪問類之外的字段。

這表明你實際上沒有測試你的類,因爲即使從一個測試類的訪問都會被視爲訪問。

寫一些測試!圖書館的用戶會爲此感謝你。

當然,如果您的測試在同一個軟件包中,您會被告知這些字段可以是默認的可見性。

你應該寫的測試是那些從用戶的角度測試你的庫:它們應該在不同的包中,這樣你就不會意外地測試不可訪問的東西(比如包私有字段和方法)給用戶。這些測試也爲您的圖書館文檔(當然你也寫了這些文檔)製作了很好的「示例代碼」。


此外,它是壞設計 - 特別是在圖書館 - 暴露在包外的字段。您應該提供訪問方法(getter和setter),以便您可以靈活地更改內部實現,而不會破壞API的現有用戶。