2017-05-06 4 views
0

私はAndroidライブラリを開発しています。モデルの1つには、ユーザーにアクセスさせたいいくつかの公開フィールドがあります。クラスとそのフィールドはpublicとマークされます。しかし、私は "アクセスはプライベートになる"と言っているような気がします。ライブラリモジュールのパブリックフィールドのリントチェックを回避するにはどうすればよいですか?

これを無視するだけでなく、@SuppressWarnings("WeakerAccess")を使用する以外の方法はありますか?

+0

特にライブラリクラスの場合は、クラス内にパブリックフィールドを持つことは悪い考えです。フィールドを永遠に保ち、内部実装への変更を防ぐことにつながります。それらのフィールドのアクセサメソッドを提供してください。 –

+0

セッターとゲッターを使用します。 –

+0

@AndyTurnerアクセサは理にかなっていますが、私はそれを隠しているとは信じられません。しかし、今やlintは "メソッド' getName() 'が使用されないことを警告します。"警告を抑制することなくこれに対処する方法はありますか? Androidスタジオに、パブリックメソッドのリントチェックが行われないように、作成しているライブラリがあることをAndroid Studioに知らせることはできますか? – fsociety

答えて

1

フィールドを非公開にすることができる場合は、クラス外のフィールドにアクセスしていないためです。

これは、テストクラスからのアクセスでさえアクセスとしてカウントされるため、実際にクラスをテストしていないことを示します。

いくつかのテストを書く!図書館のユーザーはあなたに感謝します。

もちろん、あなたのテストが同じパッケージに含まれている場合は、そのフィールドがデフォルトの可視性を持つことができます。

あなたが書いているはずのテストは、ユーザの観点からあなたのライブラリをテストするテストです。アクセスできない無関係なもの(パッケージプライベートフィールドやメソッドなど)を誤ってテストしないように、ユーザに提供する。これらのテストは、あなたのライブラリのドキュメンテーションのための素晴らしい "サンプルコード"も作成しています。


さらに、パッケージ外のフィールドを公開することは、特にライブラリ内のデザインが悪いことです。 APIの既存のユーザーを壊すことなく、内部実装を後から変更できる柔軟性を持たせるために、アクセサメソッド(getterおよびsetter)を提供する必要があります。

関連する問題