0

一个好的做法是在 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 方法)?是否应该将另一个逻辑提取到专用方法中?

4

1 回答 1

0

如果您将业务逻辑定义为与代码的主要用例直接相关的工作,那么编写结束元素不是业务逻辑。此代码支持一个用例:PhoneBookInfo条目写入持久性或外部存储。如何打开/关闭文件和文件格式详细信息,甚至您选择直接使用文件的事实,都是您或您的团队负责人做出的技术架构决策。

您是否有不应编写结束元素的情况?

如果不是,则该close()方法应执行与文件操作和格式化相关的所有技术要求。

于 2018-02-19T18:39:47.777 回答