栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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);
}

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/690295.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号