【问题标题】:Java: Where to put code for file handling in larger project practiceJava:在大型项目实践中将文件处理代码放在哪里
【发布时间】:2013-02-10 13:27:33
【问题描述】:

假设用户在某个 gui 处理类中选择了一个文件路径。 因此,我收到一个带有文件路径的字符串。

现在,放置文件打开/关闭代码的最佳做法是什么? 是否应该将路径转换为 ​​GUI 类中的 InputStream 对象, 然后将此对象传递给解析器类,还是更好 传递String对象,让解析器类处理文件打开/关闭操作?

我更喜欢第二个选项,因为在同一个类中进行文件处理和错误处理似乎很方便,然后我传递 null,或者如果出现任何类型的失败则抛出异常。 GUI 处理代码虽然很冗长,但我想将 GUI 和用户操作代码与核心逻辑分开。

但是,第一个选项很好,因为我可以更早地捕获文件读取异常, 从而消除了“跳下”一个类的需要,只是在那里抛出一个异常。

在这方面有什么好的做法?我相信还有更多这样的情况, 对象在被处理之前被传递了一点。 错误处理应该在“高级”类还是“低级”核心类中进行?

基本上,我应该尽快从 String 转换到 InputStream 还是迟到?

【问题讨论】:

    标签: java oop exception-handling


    【解决方案1】:

    首先不应在事件调度线程上进行任何文件处理。该线程应该只执行接收事件、驱动 GUI 和将其他关注点分派到单独线程所需的最少代码。否则,您将把自己画到一个称为缓慢的 GUI 的角落,从而导致您的应用程序的用户体验不佳。

    关于解析器和文件处理代码之间的关注点分离,最常见的情况是,如果 API 坚持其核心业务,它将具有更大的价值,这意味着它可以在面对与其无关的关注点发生变化时被重用。

    【讨论】:

    • 哦,对了,我用过一点,但问题还是一样:“我应该尽快从字符串路径转换为 ​​InputStream”,还是越晚越好?
    • 我的回答也应该涵盖这一点,因为将 String 转换为 InputStream 已经是非 GUI 处理。处理异常并让 GUI 对它们做出反应必须通过完善的机制来完成,该机制对早期和后期发生的异常都有效。
    • 假设 gui 调用一个单独的线程。现在,这个类应该打开文件并将输入流传递给输入处理类,还是应该这个单独的线程传递路径字符串?
    • 所以您的问题根本不是关于 GUI,而是关于解析器和文件处理代码之间的关注点分离。最常见的情况是,如果 API 坚持其核心业务,它将具有更大的价值,这意味着它可以在面对与其无关的不断变化的关注点时被重用。
    • 没错。感谢您的意见!
    【解决方案2】:

    您可以尝试使用命令解决此问题。

    Command Pattern

    基本上你描述的是一个“打开文件”命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 2020-12-07
      相关资源
      最近更新 更多