2017-05-06 50 views
0

我正在开发一个Android库,其中一个模型有一些我希望用户有权访问的公共字段。班级及其字段标记为公开。但是,我收到了一条警告:“访问可以是私人的”。如何避免在图书馆模块公共领域的棉绒检查?

有没有办法让我处理这个问题,而不是简单地忽略它或使用@SuppressWarnings("WeakerAccess")

+0

请注意,在类中使用公共字段被认为是糟糕的设计,特别是如果它是一个库类。它将你与永远保持领域联系起来,防止内部实现的变化。改为为这些字段提供访问器方法。 –

+0

使用setters和getters。 –

+0

@AndyTurner访问器是有意义的,不能相信我对此留下了深刻的印象。但是,现在lint警告我“Method'getName()'从不使用”。有没有办法处理这个问题,而不是压制警告?我可以让Android Studio知道它是我正在创建的库,因此它不会执行公共方法的这些检查吗? – fsociety

回答

1

如果它告诉你可以将字段设置为私有,那是因为你没有访问类之外的字段。

这表明你实际上没有测试你的类,因为即使从一个测试类的访问都会被视为访问。

写一些测试!图书馆的用户会为此感谢你。

当然,如果您的测试在同一个软件包中,您会被告知这些字段可以是默认的可见性。

你应该写的测试是那些从用户的角度测试你的库:它们应该在不同的包中,这样你就不会意外地测试不可访问的东西(比如包私有字段和方法)给用户。这些测试也为您的图书馆文档(当然你也写了这些文档)制作了很好的“示例代码”。


此外,它是坏设计 - 特别是在图书馆 - 暴露在包外的字段。您应该提供访问方法(getter和setter),以便您可以灵活地更改内部实现,而不会破坏API的现有用户。