【问题标题】:Guidelines for writing flexible software?编写灵活软件的指南?
【发布时间】:2011-02-12 10:46:58
【问题描述】:

一段时间以来,我一直在为我的(深奥的,如果你愿意的话)编程语言开发一个 C++ 解释器。我注意到的主要事情之一:我从一个灵活的概念开始,我编写的代码越多(Tokenizer->Parser->Interpreter),整个系统变得越不灵活。

例如:我一开始没有实现include 函数,但是解释器已经启动并运行了——我在实现它时遇到了极大的困难,就像后来“修补一些东西”一样。我的系统很快就失去了灵活性。

  • 我如何才能学会在开发过程中尽可能保持相对较小的 C++ 项目的灵活性和可扩展性?

【问题讨论】:

  • 这叫做“体验”——你构建的下一个解释器会顺利很多。
  • +1 尼尔,这甚至可以作为答案。
  • 我认为 Streamline 是在询问那种体验组成的:)
  • ~buratinas,奥斯卡王尔德在生命溢出中回答说,经验就是人们所说的错误。所以,Streamline 走在犯错的正确道路上 ;-)

标签: c++ flexibility


【解决方案1】:
  1. 在开始编码之前定义项目的结构。概述您的主要目标并思考如何实现这一目标。

  2. 对标题进行编码。

  3. 看看是否可以使用这组接口实现所有功能

  4. 如果没有 -> 回到 (2)

  5. 如果是 -> 编码 .cpp 文件

  6. 享受吧。

当然,这不适用于真正的大型项目。但是,如果您的设计是模块化的,那么将项目分成单独的部分应该没有任何问题。

【讨论】:

    【解决方案2】:

    如果需要保留

    C++ 项目在开发过程中尽可能灵活和可扩展

    那么你没有产品规格,你没有真正的目标,也没有办法定义成品。

    对于商业产品来说,这是最糟糕的情况。套用一位知名博主(不记得是谁)的话说:“在你定义你不打算做什么之前,你还没有得到产品。”

    对于个人项目,这可能不是问题。将其记下来以供将来参考。重构并继续。

    【讨论】:

      【解决方案3】:

      不要害怕进化(重构)。

      如果有很多类适合某个主题,请创建一个通用基类。

      不要对数据成员进行硬编码,而是使用指向抽象基类的指针。
      例如,不要使用std::ifstream,而是使用std::istream

      在我的项目中,我有阅读和写作的抽象类。支持读写的类使用这些接口。我可以在不更改任何代码的情况下将专门的读者传递给这些类。数据库读取器将从基 Reader 类继承,因此可以在使用读取器的任何地方使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多