【问题标题】:Integration of different parts of code [closed]代码不同部分的集成[关闭]
【发布时间】:2015-05-21 18:14:25
【问题描述】:

我正在从事一个从文档中提取元数据的小项目,并且遇到了一个难题。我有一些 Java 库,它们可以很好地用于信息检索的文档处理,如 Apache Tika、POI 等,以及其他语言中的一些工具,如 Ruby(pdf-extract) 和 bash 中的脚本,用于从 RESTful API 获取数据wget。

AFAIK,代码重用是件好事,对吧?但是,如果不可能(本机,我的意思是)重用所有这些代码,那么必须采取什么方法?

使用 Java 运行终端命令是一种解决方案,但我认为这不是一种好的编程习惯。

【问题讨论】:

  • 为什么说使用 Java 运行终端命令不是一个好的编程习惯?
  • 使用脚本将不同的程序捆绑在一起没有问题。不利的一面是,如果您想让您的项目在另一台机器上运行,您将不得不再次设置所有必需的程序,这可能会很棘手和/或复杂。但如果你只是想把事情做好,那不应该是一个问题。
  • @JosepValls 如果同样的事情可以在 Java 本身中完成,那么在 Java 本身中完成而不是使用脚本不是更好吗? (只是问)
  • @mpkorstanje 你是对的,现在只有一台 PC 安装了所有依赖项,我们只能在那里对项目进行整体测试。 pdf-extract 尤其需要很长时间才能安装,因为它还有一些其他依赖项
  • @blumonkey 我能想到的一个例子是对大型输入文件进行排序或过滤。尽管它在 Java 中完全可行,但通常使用您的操作系统本机命令会更快且内存效率更高。几年前我有一个用例,我最好的解决方案是调用一个使用排序链和 uniq 调用的脚本,如下所示:en.wikipedia.org/wiki/Uniq

标签: java ruby code-reuse


【解决方案1】:

集成多种技术在现实世界的应用中非常常见。为了使其正确扩展,您可能希望使用一些方法来保持一致。对我来说,最薄弱的部分可能是使用 wget 获取,但这是我的看法。

为了集成并使所有内容都能很好地扩展,您可能需要查看一些消息传递协议并对队列进行某种处理,其中各个工作人员在不同的编程语言和环境中运行。看:

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多