C++接口设计的心得体会

使用c++ MFC组件实现可视化计算器 在项目过程中我回顾复习了单目运算符和双目运算符的代码实现,从一开始的加减乘除基本运算添加至科学运算。由于本人编程基础薄弱,大部分实现都是通过现场学习编写,错误状况百出,不过好在慢慢调试以后bug得以修复。最终实现的成果虽然比较简陋,只能实现单步运算不能进行复合运算,但这已经是我水平的极限,在接下来的学习中我也会继续加油,不断进步,学习更多有关知识。对于单元测试,网上对于MFC单元测试的教程偏少,选择还没有掌握单元测试的具体方法,只能测试简单的运算。3.根号下不能为负数,若为负数产生提示。 阅读详情

今天在模块接口设计的时候,对如何设计一个好的接口,产生了疑惑。
遂请教了俩位师傅,得到了俩条建议,私以为十分有用!

1.接口中的参数最好不要用基础类型

如果不考虑维护的话,我们提供一个接口,当然从眼前的角度出发,使用对应的基础类型是最好的。
例如:

int add(int a,int b);

但是模块接口作为提供为外部调用的角色,在复杂的业务场景中一定面临着诸多的修改,但是不同的使用方对修改的需求是不一样的,所以写死基础类型的接口就显得不太合适。
例如这里的add()函数,之后想实现不同个数,不同类型的加法。
就需要修改或者重载。

建议写成自定义数据类型[复合数据类型]:

typedef struct MYDATA
{
	int v_num;
	int v1;
	float v2;
	double v3; 
	// ...
	// 由用户自己定义
};
auto add(MYDATA mydata)
{
	double res=0;
	void* p = &mydata;
	for(int i=1;i<=mydata.v_num;i++)
	{
		res=res+*(p+i);
	}
	auto ret = res;
	return ret;
}

调用方使用的时候,就不需要修改:

int main()
{
	MYDATA mydata {3,4,5.0,6.9};
	auto tes = add(mydata);
	
	return 0;
}

2.设计接口的时候,最小化原则

我今天写接口的时候,使用了创建模式,因为我功能划分比较详细,所以设计多个接口类,相应地多出了一些代码,我在思考这样合不合理的时候,听取了别人的建议。
”最小化原则“
给别人提供接口的时候,别人也许只会用的这一个功能,这时候最后不要提供过多的接口,所以作为提供方,可以将类划分的细一点!

C++类和接口的设计原则探讨 设计一个高效率的类型(class 型别) 立即下载

相关推荐

Qwen2.5-Omni实战:5分钟搞定多模态AI模型本地部署(含Thinker-Talker架构解析)

本文详细介绍了Qwen2.5-Omni多模态AI模型的本地部署流程,包括硬件配置、环境准备和实战应用开发。特别解析了其创新的Thinker-Talker架构,该架构通过TMRoPE位置编码实现跨模态同步处理,大幅提升多模态任务效率。5分钟即可完成部署,适合开发者快速实现文本、图像和音频的联合处理。

weixin_29085865的博客 172

C++ API设计

1. API简介 1.1 什么是API:API(Application Programming Interface)提供了对某个问题的抽象,以及客户与解决该问题的软件组件之间进行交互的方式。组件本身通常以软件类库形式分发,它们可以在多个应用程序中使用。 概况地说, API 定义了一些可复用的模块,使得各个模块化功能块可以嵌入到最终用户的应用程序中去 。API是一个明确定义的接口,可以为其它软件提供特定服务。 在C++中,API一般包括一个或多个头文件(.h)以及辅助文档。某个特定API的具体实现通常是可以被

一刀 7282

ThingsBoard 仪表板状态

请先通过阅读仪表板概述和仪表板入门案例来熟悉ThingsBoard的仪表板。文章希望通过浅显的文字描述什么是仪表板状态及如何使用。 概念 状态功能使得仪表板可以分层,配合小部件的动作,实现多层仪表板之间的跳转.每个状态对应一个仪表板的图层 每个仪表板有一个默认的根状态, 根状态可以理解为默认状态, 也就是打开仪表板默认展示的仪表板图层.编辑模式下, 点击右上角的图标来管理状态.添加多个状态后左上角出现状态切换(图层切换)下拉列表可以通过选中根状态复选框切换新的默认展示的状态/图层配合小部件的动作,实现状

物联网三分钟 2308

C++接口设计

1、shared_ptr有一个好性质就是,它会自动使用它的“每个指针专属的删除器”。 2、以 pass by reference-to-const 替换 pass by value。这样避免的多余的构造函数和析构函数,因为没有多余的新对象被创建,还避免了原来传进来的值被函数调用者所修改。 3、切割问题,子类和父类拥有相同的函数,但是当一个普通函数的子类形参传递一个父类对象,那么用这个子类参数调...

qq_30122883的博客 837

足球大数据分析入门:从赔率到预测的完整流程(附数据集)

本文提供了一份足球大数据分析的完整实战指南,涵盖从数据采集、清洗、特征工程到模型构建与评估的全流程。文章详细介绍了如何利用公开数据集与API获取数据,并通过逻辑回归、随机森林等模型进行比赛结果预测,最后强调了模型评估与策略回测的重要性,帮助读者构建自己的分析框架。

r7s8t的博客 408

语音增强评价指标全解析:从MOS到eSTOI的实战指南

本文全面解析了语音增强领域的核心评价指标,包括主观评价的黄金标准MOS,以及PESQ、STOI、eSTOI等关键客观指标。文章详细阐述了各指标的原理、适用场景与实战计算方法,并提供了Python代码示例,旨在帮助开发者和研究者建立科学的评估体系,以平衡语音可懂度与音质,从而优化算法效果。

yhn456789的博客 1200

【C/C++ 接口设计方法思路分享】C++服务接口设计:多种方法的综合对比与选择策略

服务接口(Service Interface)在软件设计中的重要性不容忽视。它不仅是软件架构的关键组成部分,还是实现模块间解耦和功能重用的基石。在C++中,由于语言的特性,如直接的内存控制和高性能,使得服务接口的设计更加重要。合理设计的接口可以提升软件性能,增强代码可读性,便于未来的扩展和维护。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 1959

电工电子实验——3BIT延时电路的设计与实现

设计一个 3BIT延时电路。 设计分析: Ⅰ.根据触发器的特性,只有来两个触发脉冲时才能恢复到原来的状态。也就是说触发器的输出信号比触发信号延迟了一个触发脉冲周期即1bit。据此3bit就需要3个触发器。 Ⅱ.输出要可控就要加一控制器,可用选择器实现。 Ⅲ.为便于观察输出信号的延迟,可设计一个F1信号。

qq_55543315的博客 1128

C++ API 设计 06 第一章 简介

第一章 简介 1.1 应用程序编程接口是什么? 应用程序编程接口(API)提供对问题的一个抽象,并说明客户端如何与实现这个问题的解决方案的软件组件来进行交互。 这些组件本身通常作为一个软件库发布,允许多个程序来使用它们。从本质上讲,API定义了可重用的构建模块,并允许功能模块被集成到最终用户的程序中。 API可以为你自己而写,也可以是为你所在组织的其他工程师而写,或者为了更大范围的整个开发社

1435

[Spawn service failed. Exiting] ROS2运行turtlebot3_gazebo例程卡住_报错

[Spawn service failed. Exiting] ROS2运行turtlebot3_gazebo例程卡住_报错

Feizhai2的博客 4864

[GXYCTF2019]BabyUpload1 -- .htaccess文件解析与蚁剑实战指南

本文深入解析了[GXYCTF2019]BabyUpload1文件上传漏洞的实战利用。通过绕过后缀名与内容检测,上传包含PHP代码的.jpg文件,并利用.htaccess文件强制服务器将其解析为PHP脚本。文章详细介绍了.htaccess的原理、构造方法、Content-Type绕过技巧,并演示了如何使用中国蚁剑连接Webshell获取Flag,为Web安全学习提供了完整实战指南。

weixin_29016315的博客 512

C++ 创建兼容多个IPC机制的上层接口

设计一个上层的IPC接口,这个接口将在未来封装底层的通信机制(如共享内存、ZMQ或CommonAPI)。这样的设计要求接口足够抽象,以便于底层实现的细节对上层用户透明。下面是设计这样一个接口的一些建议:

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 824

[QMT和ptrade量化交易小白入门]-125、菜场大妈加上四大现金行业指数风控,最大回撤从22%减少了一半

群里面有人建议,在菜场大妈策略的基础上,加入申万的行业指数(银行,钢铁,有色,煤炭)测算其宽度,当这四大行业其中有一个高就会清仓(用来控制回撤)。这背后的逻辑是,在存量资金博弈的市场环境中,资金总量相对固定,当银行、钢铁、有色、煤炭等大市值周期行业因基本面改善(如涨价、政策催化)或避险需求而走强时,会吸引大量资金涌入,导致其他板块(尤其是小市值股票)面临流动性虹吸。经过回测,对比上一个版本发现确实是可以降低一半的回撤,最大回撤从22.3%降到了11.4%,而且有很多时间是空仓等待。

木头大左的博客 241

结对编程收获

结对编程收获   ——我和我的伙伴分到了Core组,他负责生成编写四则运算表达式函数,而我负责编写计算函数以及整体框架和接口   这一次结对编程不仅学到了不少编程技术,更在交流合作中发现了自己以往的问题,因为我一直以来是一个偏爱独来独往的人,宁愿在合作中多干活,也不愿意别人对我的构想指手画脚,不过这一次是无法避免的了。 编程收获: 1、实战经验:   这是一次难得的C++实战经...

weixin_30408309的博客 174

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

软工作业-Calculator

可视化编程和UI界面设计,VS2022+QT

qq_60436630的博客 217

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C++ ,dll 接口程序设计心得

 最近工作都是写一些C++ dll,供同事调用,对写接口程序有了点心得体会总结起来是这样的: 1.接口程序编写步骤:设计接口实现接口补充接口反复增加修改接口 2.接口设计原则:尽量的简单,通用,以不变应万变  比如: class ipacket{      virtual  int release();      virtual void

Monkeycn的专栏 2333

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Effective C++学习笔记(条款1-34)

1. 开场白 《Effective C++》这本书一直觉得有些难度,已经反复看了好几次了,每次看都能发现一些以前没有注意到的知识点。建议在看这本书前先看看《C++编程思想》或者是《C++ Primer》,另外,如果看过一些《设计模式》或者《敏捷设计开发》的会稍微好些,书中一些条款涉及了设计模式,虽然并不是在讲设计模式,但是一些设计模式中的思维模式影响了这些条款的内容。 最后,我不知道是我个人语

明何 5470

学完《软件工程(C编码实践篇)》的心得体会

by:贾方琪 + 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006 【心得体会】 非常感谢网易云课堂这么一个平台,也非常感谢孟老师给我们提供这么一个学习的机会。说起心得体会我认为我还是比较有感触的,我是一个跨考的学生,本身对C语言了解的并不是很透彻,特别是关于用它来编程。 在这

qq_38330846的博客 531

【c++】基于Qt实现一个可视化的简易计算器

视频展示无标题视频——使用Clipchamp制作。

m0_62370558的博客 1203

Python与C++模块化编程对比:从设计哲学到工程实践

模块化编程是软件工程的核心概念,旨在通过将复杂系统分解为独立、可复用的组件来提升代码的可维护性和可扩展性。其原理在于通过清晰的接口定义和依赖管理,实现高内聚、低耦合的代码组织。在技术价值上,模块化能显著提升开发效率、促进团队协作并降低系统复杂度。Python和C++作为两种主流编程语言,在模块化实现上体现了截然不同的设计哲学:Python基于动态解释执行和运行时加载,提供了灵活便捷的模块导入机制;而C++则遵循静态编译和零开销抽象原则,通过头文件与源文件的分离、编译链接过程来实现严格的接口契约。这种差异直接

stevenbill的博客 439

C++面向对象程序设计思想

 C++面向对象程序设计    六年前,我刚热恋面向对象(Object-Oriented)时,一口气记住了近十个定义。六年后,我从几十万行程序中滚爬出来准备写点心得体会时,却无法解释什么是面向对象,就象说不清楚什么是数学那样。    软件工程中的时髦术语面向对象分析和面向对象设计,通常是针对需求分析和系统设计环节的。面向对象有几大学派,就象如

baggiowangyu的专栏 7413

【转】修练8年C++面向对象程序设计之体会

修练8年C++面向对象程序设计之体会 2005年04月29日 作者:林锐 责任编辑:xietaoming   六年前,我刚热恋“面向对象”(Object-Oriented)时,一口气记住了近十个定义。六年后,我从几十万行程序中滚爬出来准备写点心得体会时,却无法解释什么是“面向

IBC 865

C++经验之谈

我刚热恋“面向对象”(Object-Oriented)时,一口气记住了近十个定义。六年后,我从几十万行程序中滚爬出来准备写点心得体会时,却无法解释什么是“面向对象”,就象说不清楚什么是数学那样。软件工程中的时髦术语“面向对象分析”和“面向对象设计”,通常是针对“需求分析”和“系统设计”环节的。“面向对象”有几大学派,就象如来佛、上帝和真主用各自的方式定义了这个世界,并留下一堆经书来解释这个世界。

痞子龙3D编程 1402

修练8 年C++面向对象程序设计之体…

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <div id="content" class= "content mod-cs-content text-content clearfix">修练8 年C++面

woashizhangsi的专栏 438

C++面向对象程序设计之体会

转载地址:http://pcedu.pconline.com.cn/empolder/gj/c/0504/609482_all.html#content_page_1      六年前,我刚热恋“面向对象”(Object-Oriented)时,一口气记住了近十个定义。六年后,我从几十万行程序中滚爬出来准备写点心得体会时,却无法解释什么是“面向对象”,就象说不清楚什么是数学那样。软件工程中的时

jinjinwu的专栏 777

谈谈8年C++面向对象设计的经验体会

我从几十万行程序中滚爬出来准备写点心得体会时,却无法解释什么是“面向对象”,就象说不清楚什么是数学那样。软件工程中的时髦术语“面向对象分析”和“面向对象设计”,通常是针对“需求分析”和“系统设计”环节的。“面向对象”有几大学派,就象如来佛、上帝和真主用各自的方式定义了这个世界,并留下一堆经书来解释这个世界。   有些学者建议这样找“对象”:分析一个句子的语法,找出名词和动词,名词就是对象,动

fengjunwang1980的专栏 316
上一篇: 在Windows上安装git
下一篇: C++设计模式:抽象工厂模式
CodeBowl
博客等级 码龄5年 7664粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值