【发布时间】:2011-01-21 11:57:05
【问题描述】:
我为自己设定了实现实时 MIDI 应用程序的任务。像我迄今为止编写的所有其他软件一样,我从编码开始。我实现了一个微型 GUI (GTK2) 应用程序,它可以控制Jack Audio Connection Kit 及其客户端的传输状态。
我以前从未写过实时应用程序,也只写过一个多线程程序。这两个细节结合起来使这对我来说是一个巨大的挑战,因为我迄今为止编写的所有软件都不需要我先设计它。我只是偶尔需要笔和纸来解决问题。
然而,这个项目不会让我继续编码。但我对软件设计几乎一无所知,我是自学成才(在 1990 年代中期打折的 2 年计算机学习课程)。我总是循序渐进地工作,让一些东西发挥作用,然后在它的基础上进行建设。
在我的研究过程中,我遇到了模型视图控制器模式,但我发现很难不去考虑细节,并且找不到任何基础来构建而不发现导致一切崩溃的问题。
我需要建议才能越过这个障碍。我需要停止寻找分散我思路的干扰。这是干扰之一。我如何越过这个障碍?
【问题讨论】:
-
虽然设计应该与语言无关,但我认为有关您将从事的工作的更多细节可能会有所帮助。这是否面向对象?您确定 MVC 适用于您的具体问题吗?
-
@p.marino:目前我已经开始使用 C,因为我的 C++ 有点生疏(而且从来没有那么好)。我确实倾向于以模块化的方式编写 C。但我也可以切换到 C++ 以利用它的一些类特性,但通常使用更 C 风格的方法。
-
@p.marino:我不确定 MVC 是否适用。这也是问题的一部分,当您不熟悉设计模式或问题时如何评估它们?这听起来很荒谬,我晚上正在尝试!
-
当我说使用 C++ 是一种 C 风格的方法时,我的意思是:使用类而不是结构,并使用构造函数/析构函数和类方法。 C 方法意味着我将使用指针而不是引用,倾向于避免复制构造函数和运算符重载。
-
模式(恕我直言)主要是一种交流工具:如果你想向同事解释你在做什么,或者问我们你所做的是否正确,拥有共同语言会有很大帮助。在您的情况下,模式不一定有任何好处:您的问题(根据您的描述)是如何进行设计。这可能会带你自己“重新发现”MVC(或其他模式),也许你会让别人告诉你“嘿,这只是飞轮”或“伙计,你在描述 MVC”,但这不是重点,为你,此刻。
标签: design-patterns real-time midi jack