我正在制作我的第一个API来获取数据并从网站解析它.因此,它有很多网络和解析.我读到有关API的内部包不应该是公开的; 就像在Javadocs.所以我的问题是应该和不应该放在内部包中.这是我的包装设计,我忽略了非重要的包装设计.
.networkstats
.networkstats.model
.networkstats.parser
Run Code Online (Sandbox Code Playgroud)
在networkstats包内有一个叫做的类NetworkStats.这是处理和检索所有网络连接的主类.然后,它使用parser包内的类来处理数据.它返回一个Model类,该类保存model包内的数据.我想要包含内部包,因为会有一些不打算由用户使用的类和接口.
例如,我想让一个类处理所有网络连接,以便其他类NetworkStats可以访问它.我想这样做的原因是因为当它可以在一个地方时,我不想复制其他类中的代码.当然我不希望其他用户使用这个类,所以我会把它放在内部包中?我也会把我的parser包放在内部.所以我的主要问题是你是否在内部包中放置了不打算在公共场合使用的类和接口?我知道他们仍然可以访问它.
.networkStats.internal.DataManager // class that handles network connections
.networkStats.internal.parser
Run Code Online (Sandbox Code Playgroud) 我想要这个库,我正在努力获得日志记录支持,但Android和SE有自己的日志记录方式.在SE中,您可以使用System.out.println方法或java.util.logging.Logger类.Android用于android.util.Log登录logcat.起初我使用反射检查android是否可用,然后反射调用日志方法Log.class; 但这不是一个好主意.
我的解决方案是让开发人员使用我的库处理日志.他们将设置一个Handler接口并具有onLog方法
public void onLog(int level, String tag, String msg);
Run Code Online (Sandbox Code Playgroud)
该库将在我的自定义Logger类中的处理程序上调用onLog方法.让开发人员处理日志而不是库本身是一个好主意吗?到目前为止似乎是最好的解决方案,如果我把它记录好,那么它应该不是问题.
我注意到所有Strings in DefaultHandler的事件方法都被实习.看看Strings是否等于==而不是更好equals()吗?
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if(localName == "element")
// do something
// or
if(localName.equals("element"))
// do something
}
Run Code Online (Sandbox Code Playgroud)
由于所有字符串文字都是实习的,因此应该提高性能.但是我见过的所有教程和示例都使用了equals()
我能看到的一个问题是你是否需要使用 equalsIgnoreCase()