2017-05-06 4 views
0

Android 라이브러리를 개발 중이며 모델 중 하나에 사용자가 액세스 할 수있게하려는 공개 입력란이 몇 개 있습니다. 클래스와 필드는 공개로 표시됩니다. 그러나 "액세스가 비공개가 될 수있다"는 경고 메시지가 나타납니다.라이브러리 모듈의 공용 필드에서 보풀 검사를 피하는 방법은 무엇입니까?

나를 무시할 수있는 방법이 있습니까? 아니면 그냥 무시하거나 일반용이 아닌 것입니까? @SuppressWarnings("WeakerAccess")?

+0

특히 라이브러리 클래스 인 경우 클래스에 public 필드를 포함하는 것은 좋지 않은 디자인으로 간주됩니다. 필드를 영원히 유지하고 내부 구현을 변경하지 못하게합니다. 대신 해당 필드에 접근 자 메서드를 제공하십시오. –

+0

세터와 게터를 사용하십시오. –

+0

@AndyTurner 접근자는 이해할 수 있습니다. 나는 그것에 블랭킹했다고 믿을 수 없습니다. 그러나 이제 lint는 "getName() 메서드가 사용되지 않는다"라는 경고 메시지를 보냅니다. 억제 경고없이이 문제를 처리 할 수있는 방법이 있습니까? Android Studio에서 공개 메소드에 대한 이러한 보풀 확인을 수행하지 않도록 내가 만들고있는 라이브러리임을 알릴 수 있습니까? – fsociety

답변

1

필드를 비공개로 설정할 수 있다고 말하면 클래스 외부의 필드에 액세스하지 않기 때문입니다.

이것은 테스트 클래스의 액세스조차도 액세스로 간주되므로 실제로 클래스를 테스트하지 않는다는 것을 나타냅니다.

몇 가지 테스트를 작성하십시오! 도서관 이용자 들께 감사드립니다.

물론 테스트가 동일한 패키지에 있으면 필드를 기본 공개로 설정할 수 있습니다.

당신이 작성해야하는 테스트는 사용자의 관점에서 라이브러리를 테스트하는 테스트입니다. 액세스 할 수없고 관련성이없는 (예 : 패키지 개인 필드와 메소드와 같은) 실수로 테스트하지 않도록 다른 패키지에 있어야합니다 사용자에게 이 테스트는 또한 라이브러리 설명서에 훌륭한 "예제 코드"를 작성합니다.


또한 패키지 밖의 필드를 노출하는 것은 특히 디자인이 좋지 않습니다. 나중에 API의 기존 사용자를 손상시키지 않고 내부 구현을 변경할 수있는 유연성을 허용하려면 접근 자 메서드 (getter 및 setters)를 제공해야합니다.