Bjarne Stroustrup语录[C++经验]

C++之父Bjarne_Stroustrup_精彩语录 C++之父Bjarne_Stroustrup对于c++‘注意事项’的经典总结,相信每个无论是c++新手还是老手,都会受益匪浅 立即下载

1.  在编程序时,你是在为你针对某个问题的解决方案中的思想建立起一种具体表示。让程序的结构尽可能地直接反映这些思想:
   ★.如果你能把“它”看成一个独立的概念,就把它做成一个类。
   ★.如果你能把“它”看成一个独立的实体,就把它做成某个类的一个对象。
   ★.如果两个类有共同的Interface,将此Interface做成一个抽象类。
   ★.如果两个类的实现有某些显著的共同东西,将这些共性做成一个基类。
   ★.如果一个类是一种对象的容器,将它做成一个模板。
   ★.如果一个函数实现对某容器的一个算法,将它做成为对一族容器可用的模板函数。
   ★.如果一组类、模板等相互之间有逻辑联系,将它们放进一个名字空间里。

2.  在你定义一个并不是实现某个像矩阵或复数这样的数学对象的类时,或者定义一个低层的类型如链接表的时候:
   ★.不要使用全局数据(使用成员)。
   ★.不要使用全局函数。
   ★.不要使用公用数据成员。
   ★.不要使用友元,除非为了避免a或c。
   ★.不要在一个类里面放“类型域”(指那种为了说明一个类所存储数据的情况而放置的标志域) ;采用虚函数。
   ★.不要使用在线函数(inline function),除非作为效果显著的优化。

二、C++ 概览

1.  不用害怕,一切都会随着时间的推移而逐渐明朗起来。
2.  你并不需要在知道了C++的所有细节之后才能写出好的C++程序。
3.  请特别关注程序设计技术,而不是各种语言特征。

三、标准库概览

1.  不要像重新发明车轮那样企图做每件事;去使用库。
2.  不要相信奇迹;要理解你的库能做什么,它们如何做,它们做时需要多大的代价。
3.  当你遇到一个选择时,应该优先选择标准库而不是其他的库。
4.  不要认为标准库对于任何事情都是最理想的。
5.  切记#include 你所用到的功能的头文件。
6.  记住,标准库的功能定义在名字空间std之中。
7.  请用string,而不是char*。
8.  如果怀疑,就用一个检查区间范围的向量(例如Vec)。
9.  vector 、list和 map 都比T[] 好。
10. 如果向一个容器中添加一个元素,用push_back() 或 back_inserter()。
11. 采用对vector的push_back(),而不是对数组的realloc()。
12. 在main()中捕捉公共的异常。

四、类型和声明

1.  保持较小的作用域。
2.  不要在一个作用域和它外围的作用域里采用同样的名字。
3.  在一个声明中只声明一个名字。
4.  让常用的和局部的名字比较短,让不常用的和全局的名字比较长。
5.  避免看起来类似的名字。
6.  维持某种统一的命名风格。
7.  仔细选择名字,反映其意义而不是反映实现方式。
8.  如果所用的内部类型表示某种可能变化的值,请用typedef 为它定义一个有意义的名字。
9.  用typedef为类型定义同义词,用枚举或类去定义新类型。
10. 切记每个声明中都必须描述一个类型(没有“隐式的int”)。
11. 避免有关字符数值的不必要假设。
12. 避免有关整数大小的不必要假设。
13. 避免有关浮点类型表示范围的不必要假设。
14. 优先使用普通的int 而不是short int 或者long int。
15. 优先使用double 而不是float 或者long double。
16. 优先使用普通的 char 而不是 signed char或者 unsigned char。
17. 避免做出有关对象大小的不必要假设。
18. 避免无符号算术。
19. 应该带着疑问去看待从signed 到unsigned ,或者从unsigned 到signed 的转换。
20. 应该带着疑问去看待从浮点到整型的转换。
21. 应该带着疑问去看待向较小类型的转换,如将int转换到char。

五、忠告

1.  避免非平凡的指针算术。
2.  当心,不要超出数组的界线去写。
3.  尽量使用0而不是NULL。
4.  尽量使用vector 和valarray ,而不是内部(C风格)的数组。
5.  尽量使用string而不是以0结尾的char 数组。
6.  尽量少用普通的引用参数。
7.  避免 void*,除了在某些低级代码里。
8.  避免在代码中使用非平凡的文字量(“神秘的数”)。相反,应该定义和使用各种符号常量。 
若依开源框架(分离版)在人大金仓数据库下使用 对于甲方业务特殊要求,使用国产化数据库人大金仓,作为项目主要存储。这里以若依开源框架整合人大金仓为例,演示如何在真实项目中引入人大金仓。 阅读详情

相关推荐

智能体评测技术与实践:从评估维度到DeepEval实战指南

智能体评测技术与实践:从评估维度到DeepEval实战指南 本文系统探讨了AI智能体的评测体系与实践方法。首先从四个关键维度构建评估框架:基础能力(意图理解、知识完整性)、复杂任务(多轮对话、动态工作流)、可靠性(幻觉抑制、安全合规)以及工具效率(参数填充、多工具协同)。其次分析了主流评测工具,包括xBench的动态双轨评估、DeepEval的全链路监控等解决方案。最后详细介绍了DeepEval的实战应用,涵盖环境配置、测试用例构建、指标配置及CI/CD集成,展示了如何通过代码化评估实现智能体质量的持续提升

Linda的自动化测试之旅 3422

Bjarne Stroustrup 语录

 Bjarne Stroustrup 语录:一、致读者  1. 在编程序时,你是在为你针对某个问题的解决方案中的思想建立起一种具体表示。让程序的结构尽可能地直接反映这些思想:  ★.如果你能把“它”看成一个独立的概念,就把它做成一个类。  ★.如果你能把“它”看成一个独立的实体,就把它做成某个类的一个对象。  ★.如果两个类有共同的界面,将此界面做成一个抽象类。  ★.如果两个

prochsh的专栏 817

从生成到检测:全面解析Deepfake技术的演进与对抗策略

本文全面解析了Deepfake技术的演进与对抗策略,从GAN生成技术到先进的检测手段,探讨了其在娱乐与安全领域的双重影响。文章详细介绍了Deepfake的核心原理、技术迭代关键节点以及最新的检测方法,揭示了AI生成与识别的激烈博弈。同时,展望了量子计算和生物特征认证在未来攻防战中的潜在应用。

jenkins8butler的博客 255

名人名言——摘录自编程随想的博客

1. 一个人的价值,在于他贡献了什么,而不在于他获得了什么!——爱因斯坦2. 你若喜爱你自己的价值,你就得给世界创造价值!——歌德3. 我从来不把安逸和享乐当作生活目的;对这种伦理基础,我称之为【猪栏的理想】——爱因斯坦4. 未经反思自省的人生不值得去过The unexamined life is not worth living.——苏格拉底 (哲学之父)5. 大多数人在20到30岁就已经过...

weixin_34124651的博客 2254

OFDM时频脉冲形状与子载波正交性的理解

从多载波调制的角度来理解子载波间正交,首先要明确OFDM默认的脉冲成型是时域矩形窗,时域上每个子载波 ej2πfnte^{j2πf_nt}ej2πfn​t 都被一个矩形窗脉冲gT(t)g_T(t)gT​(t)成型。其次,OFDM子载波间隔 等于 OFDM符号周期的倒数,这是子载波正交的条件。 ​ 根据时频脉冲形状,可以从时域上理解如左图(注意是矩形脉冲 乘 复指数),从频域上理解如右图(sinc脉冲 卷 频点)。 ​

weixin_43803202的博客 2215

如何用Bertalign快速搞定多语言句对齐?5分钟上手教程(附避坑指南)

本文详细介绍了如何利用Bertalign工具快速实现多语言句对齐,从安装配置到实战应用的全流程指南。通过LaBSE句向量技术,Bertalign显著提升了对齐准确率,支持25种语言的任意组合,特别适合处理复杂句式。文章还提供了常见问题的解决方案和性能优化技巧,帮助用户高效完成多语言文本对齐任务。

weixin_42538752的博客 353

著名编程语录

<br />一个好的程序员应该是那种过单行线都要往两边看的人。——Doug Linder, 系统管理员<br />任何一个工具,它的一个最重要的、同时也是最难以做到的方面就是对那些学习使用这个工具的人在使用习惯上的影响。如果这个工具是一种编程语言,那么,这种影响——不管我们是否喜欢——将是一种思考习惯上的影响。<br />—— Edsger Dijkstra, 计算机科学家<br /><br /><br />抽象化是一种非常的不同于模糊化的东西 … 抽象的目的并不是为了模糊,而是为了创造出一种能让我们做到百

wswupeng的专栏 1241

LM1875官方电路图元件作用解释说明以及电路调校

R1是为C1提供充放电回路用的电阻,这是老外工作严谨的地方,其实接好电位器之后直流通路就已经存在了,这个加上只能防止最恶劣情况时也能把C1的电能放掉,尽管只有一点点 C1是输入电容,主要作用是隔离前后级的直流信号,但是这个电容对音质的影响很大,可以换用不同的品牌和容量来部分修改音质和音色 R2提供LM1875正输入端的直流电平控制点,接地就表示在理想情况下Lm1875的输出直流电平是0V;还有一个作用就是确定放大器的交流输入阻抗为电阻值。 R3、R4是反馈电阻,这个电路的放大倍数为R4/R3+1=21倍。.

m0_50862404的博客 1万+

Bjarne Stroustrup在《The C++ Programming Language》如是说

环境变量是软件工程中的‘暗物质’,我们不能直接看到它们,但它们却无处不在,影响着每一个过程。它让我们能够更专注于问题本身,而不是问题的表象。管理好你的库和依赖,就等于解决了软件开发中一半以上的问题。构建系统是软件项目成功的基础,它影响着整个项目的构建和分发。确地组织和管理代码和配置文件,是软件工程成功的关键。软件工程不仅仅是编写代码,还包括如何组织和扩展代码。掌握工具的高级特性,等于拥有解决问题的更多选择。掌握工具的使用,就等于掌握了解决问题的一半。预先的准备和验证,是避免以后麻烦的最佳方式。

weixin_42849849的博客 265

MongoDB分布式事务实现:两阶段提交、日志复制与冲突解决

MongoDB分布式事务机制解析 本文深入剖析了MongoDB 4.0+版本的分布式事务实现原理,重点分析了其在跨文档/跨集合/跨分片场景下的数据一致性解决方案。核心内容包括: 底层机制:采用改进的两阶段提交协议,通过oplog日志复制实现无中心协调器的事务管理,结合WiredTiger存储引擎和锁机制保障ACID特性。 创新设计:将传统2PC的中心协调功能分散到Primary节点,利用oplog作为事务状态记录,实现自动故障恢复和60秒超时回滚机制。 性能优化:针对大事务、写冲突等常见问题,提出拆分微事务

数据知道的博客 1261

Harmony:C# 动态代码补丁的5大秘密武器

Harmony 是一个开源库,它允许你在运行时修改托管代码(即使用 .NET 或 Mono 编译的语言编写的应用程序)。它通过利用 AOP(面向切面编程)的思想,可以在不重新编译代码的情况下添加、替换或修改方法的行为。这对于游戏模组(Modding)、插件开发以及调试工具非常有用。安装 Harmony要使用 Harmony,你需要首先安装它。Harmony 作为一个 NuGet 包,可以直接通过 Visual Studio 的 NuGet 包管理器进行安装。安装步骤打开 Visual Studio。

java专栏 1193

C++之父:Bjarne Stroustrup 语录

 摘录自Bjarne Stroustrup 的《The C++ Programming Language》(Special Edition)     一、致读者    1.  在编程序时,你是在为你针对某个问题的解决方案中的思想建立起一种具体表示。让程序的结构尽可能地直接反映这些思想:    ★ 如果你能把“它”看成一个独立的概念,就把它做成一个类。    ★ 如果你能把“它”

apull的专栏 1608

关于红队方面的学习资料

关于红队方面的学习资料

Sumarua的博客 1085

c++之父:Bjarne Stroustrup 语录

c++之父:Bjarne Stroustrup 语录(转)摘录自Bjarne Stroustrup 的《The C++ Programming Language》(Special Edition) 一、致读者1.  在编程序时,你是在为你针对某个问题的解决方案中的思想建立起一种具体表示。让程序的结构尽可能地直接反映这些思想:   ★.如果你能把“它”看成一个独立的概念,就把它做成一个类

ismycxp的专栏 652

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: C++相关书籍推荐
下一篇: vbscript函数大全
AndyDevelope
博客等级 码龄21年 16粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值