这是一个关于如何构建c ++应用程序而不是c ++本身的问题
我正在构建一个被设想为图形应用程序的应用程序,但实现的细节需要大量的抽象功能来促进界面,例如从文件,Web资源等中读取对象列表。已经想出如何实现这个功能没有太大的困难,但我没有很好的方法来测试它。具体来说,我已经开始实现图形环境,但尚未准备好使用较低级别的功能。
我还建立了很多我希望下层要做的事情,但它尚未经过测试。所有这些代码都驻留在一个文件夹中,并存储在具有常规提交的版本控制系统中。
我在编写C ++中的任何功能方面相对较新,到目前为止只在类项目上工作过,但我在PHP中编写了大量各种类型的程序。
如果这是一个PHP项目,那么测试任何功能似乎都很简单:
对于使用C ++来说,这似乎是一种非常尴尬的方式。我是否已经倒退了,你如何在编译的程序中解决小的孤立问题并将它们导入到你的项目中;是否有一个有用的工作流程。
答案 0 :(得分:2)
一般来说,您的问题的答案是使用类和单元测试。在互联网上搜索敏捷/极限编程。
这个想法是这样的:
如果以这种方式编写代码,则可以创建可重用且健壮的代码。
老实说,我个人并不相信真正的TDD(测试驱动开发) - 我觉得在编写代码之后编写单元测试会更好(我觉得即将到来的用户尖叫的火焰来自用户)敏捷或死!“)。
编辑:如果你的问题更多的是多个类的实际构建的谎言,那很容易。一般来说,每个类都应该封装在2个文件中(源代码和头文件)。只需在新项目中包含这些文件(以及您要使用的所有其他类中的文件)。 #include“xxx.h”在需要使用类的适当位置,编写使用这些类的代码,然后构建。就是这样。
答案 1 :(得分:1)
我想这可能是任何OO项目的一般策略。
首先确定主要组件,并确保您对所有事情的责任有充分的了解。
写出每个组件的界面,并检查(逻辑上)以确定它适合您的问题。
实施每个模块。
就测试而言,制作测试器模块(存根):例如,创建一个类,该类将向GUI发送输入,模仿将由实际组件发送的输入。由于您对界面有清晰的认识,因此如何生成此结果将无关紧要。
对系统中的每个组件重复此过程,然后将它们放在一起。
希望有所帮助
答案 2 :(得分:0)
我目前处于类似的情况,我已经实现了一些功能(通过某些API的文件I / O,工作的主要部分等)。所以也许我的一些经历会有所帮助:
的src / CFoo.h:
// class 'CFoo': header file
#ifndef CFOO_H
#define CFOO_H
#include <only_what_you_need_in_declaration_interface>
class CFoo {
private:
// class data
public:
// constructors, destructors, getters, setters, etc.
void doWork();
};
#endif /* CFOO_H */
的src / CFoo.cpp:
// class 'CFoo': implementation file
#include "CFoo.h"
#include <what_you_need_in_addition_for_internal_workings_of_methods>
// code for other methods...
void CFoo::doWork() {
// work
}
希望它有所帮助。