一个好的做法是在close方法(AutoCloseable接口)中包含业务逻辑,而不是通过try-with-resource手动调用逻辑?
我有一个场景,我使用jax-b将流方式写入XML文件,我需要手动编写开始标记元素并启动结束元素。 业务逻辑是密切的方法,但我认为不是好的做法,你的意见是什么?
我的例子
public class PhoneBookWriter implements AutoCloseable {
public void open(Path filePath) {
// open file
}
public void write(PhoneBookInfo phoneBookInfo) {
// write phone book pojo to xml file
}
public void close() {
// check if stream is not null
// --> part of business logic -> writeEndElement via XmlOutputWriterStream
// close stream
}
您对开放和关闭方法有何看法?可能该方法有业务逻辑还是只有开放流(open方法)和close流(close方法)?应该将另一个逻辑提取到专用方法吗?
答案 0 :(得分:0)
如果将业务逻辑定义为与代码的主要用例直接相关的工作,则编写结束元素不是业务逻辑。此代码支持一个用例:PhoneBookInfo
条目写入持久存储或外部存储。如何打开/关闭文件和文件格式详细信息,甚至是您选择直接使用文件的事实,都是您或您的团队负责人做出的所有技术架构决策。
您是否有不应编写结束元素的场景?
如果没有,那么close()
方法应该执行与文件操作和格式化相关的所有技术要求。