【问题标题】:The best design for a command-line tool [closed]命令行工具的最佳设计[关闭]
【发布时间】:2013-04-03 19:31:11
【问题描述】:

这是一个简单的任务,让我简单描述一下!

我应该编写一个命令行工具,它以文件名作为参数,文件 我要阅读的内容由多行组成,每一行都应该是一个要执行的 command,该命令后面是要应用的适当参数,以使其清楚:

FILE

sum; 1, 2, 3, 4

Output

10

命令行工具应该满足这些要求:

1- 易于维护、开发(未来可能会添加更多命令)且用户友好。

2- 命令行参数可能会被修改并可以添加新的。

3- 可以作为一个开源项目,一个有组织的源树。

我希望开发人员能够处理源代码并充分理解它。

我是这些东西的新手,我对设计模式有点陌生,所以我不太了解,我想遵循开发这个程序的最佳实践,我真的想在适用的情况下使用设计模式并让我的代码更好更干净,所以请建议并指导我以最好的方式编写这个工具,我不想写脏代码,我想写一个高质量的代码,它可以做它的意图并且可以很容易地进一步开发.

请提出建议并随时批评我刚才所说的话。

最后一件事,我将使用 C++!

谢谢!

【问题讨论】:

  • 这并不是你想的那样“编写解析器”,而是为一种语言设计一个解释器,这不是一件小事。您可能想研究什么是“词法分析器”和“解析器”。 Flex + Bison 是 C 自动生成两者的工具集,对于 C++,您可以查看 Boost.Spirit。
  • 批评你刚才说的:你需要的是雇一个程序员,这不是这个网站的目的。相比之下,这个网站是为那些自己编写代码的人准备的,他们已经付出了很多努力,完成了研究,并遇到了一个特定的障碍,他们用一个简短的、最小的、自包含的示例代码来演示.
  • 我知道解析器是什么,这里不符合条件,因为命令很容易修改,而且不是修改源代码的好方法。
  • 对于2),主程序是否需要重新构建,还是您期望类似插件的架构?
  • 重建,会有源代码管理。

标签: c++ design-patterns command-line-tool


【解决方案1】:

1- Boost.Program_options 在解析命令行选项时是您的朋友。
2- 看看command pattern。尽管用具有反射功能的语言更容易实现,但仍然可以将“命令字符串”映射到函数。请为此使用 C++11 工具。即 std::function。
3- C++ 项目没有标准结构。就个人而言,我使用 Boost 推荐的结构。

【讨论】:

    猜你喜欢
    • 2010-09-26
    • 2017-05-25
    • 2011-03-03
    • 2010-12-31
    • 2012-03-09
    • 2021-11-23
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    相关资源
    最近更新 更多