C++产品开发讲座-(二)开发规范

C++产品开发讲座-(二)开发规范

1.采用git管理项目采用cmake管理编译

1.1 git常⽤命令

github/gitee 
git add 
git commit 
git pull 
git rebase

1.2 cmake常⽤

find_package()
include_directories()
link_directories() 
aux_source_directory() 
add_executable()/add_library()
target_link_libraries()

2. 文件结构

3rdparty 存放第三方的inc和lib
module 存放自己写的各个模块,每个module都需要单独写一个demo示例,表明demo用法
	-module1
		--demo	
		module1.cpp
		module1.hpp
app	存放上层应用
test 存放测试代码
doc	存放文档
build	存放编译时的临时文件

3. 自顶向下开发

(1)做技术验证可以直接写细节,但做正式产品开发,切忌过早陷入技术细节
(2)先写顶层,main函数与顶层class接⼝(public函数),逐步往下倒逼开发
(3)接⼝先写,但不实现,每次写⼀个层次的代码,完成后再下⼀级细节
(4)对于开发⽅者降低思考⻔槛,类似于写草稿
(5)对于阅读⽅来说降低了阅读⻔槛,⼈脑容量有限,每次阅读同⼀层次的代码逻辑,不频繁跳转容易理解
// main函数定义了调⽤⽅式,倒逼class需要具有哪些public函数
// test_demo_data.cpp
// app_demo_data.cpp
int main() 
{
    
    
	DemoData object;
	if (!object.init()) return -1;
	if (!object.procPanMeasGFeo()) return -1;
	return 0;
}
// main函数倒逼class需要具有哪些函数
class DemoData
{
    
    
public:
	bool init();
	bool procPanMeasGFeo()//先写不实现
	 {
    
    
		 findROI(); // 等到实现的时候,也是写⼦函数,不直接⼀上来就写底层for循环细
		节
		 fileterROI();
		 findEdge();
		 procMeas();
		 return true;
	 }
private:
	bool findROI();
	bool fileterROI();
}

4. 必须配测试

(1)每⼀个重要的class,都需要独立的测试程序
(2)如果模块很少,功能很简单,可以单独集中放到test文件夹下
(3)如果模块多,可以放到模块内部

5. 去耦合

每⼀个模块,知道外⾯的事情越少越好,屏蔽底层细节

class Img2Video//编码类
{
    
    
public:
 // 不建议,Img2Video就做图像编码,不需要知道有相机这么⼀个Camera的class的存在
 // 后⾯把Img2Video挪到其他项⽬,其他相机也能⽤
 	bool init(Camera* p_camera);
}

去耦合的模块,单独拿出来也可独立编译到其他项目

猜你喜欢

转载自blog.csdn.net/qq_39839546/article/details/122129034