`

C++ Coding潜意识(-ing)

    博客分类:
  • C++
阅读更多

意识形态1:构造函数对于自身成员的赋值操作尽量使用初始化列表完成。
常规形态:
public MyCls:MyCls(int iobj)
{
    m_iobj=iobj;
}
意识形态:
public MyCls:MyCls(int iobj):m_iobj(iobj)
{}
意识形态2:使用const、enum、inline替换#define
常规形态:
#define PI 3.14
意识形态:
const double pi=3.14
意识形态3:尽可能使用const
如果const出现在星号左边,则被指物为常量;如果出现在星号右边,则指针本身为常量。
注意:const MyClass*与MyClass const * 是一个意思!

意识形态4:虚析构函数的用法

1>基类应该具备一个虚析构函数

2>非基类不要提供虚析构函数

3>具备其他虚函数的类(很可能作为基类)应该具备一个虚析构函数

意识形态5:析构函数绝对不要抛出异常

意识形态6:绝对不要在构造或是析构函数中调用虚函数,因为它们不会被传递给子类

意识形态7:operator=中需要考虑自我赋值的问题

意识形态8:

1>Copying函数设计时务必确保复制“对象内的所有成员变量”;

2>如果该对象为子类,则除此之外,还要复制“基类的全部成员变量”;

3>不要使用一个Copying函数实现另一个Copying函数,如果有必要,务必将共同部分放入第三个函数,而后二者共同调用之。

意识形态9:如果在new表达式中使用[],则相应的delete表达式一定也要使用[];反之,如果new表达式没有使用[],相应的delete表达式一定不要使用[]

意识形态10:函数的实参最好不要以嵌套构造函数的形式出现,尤其设计到指针new的时候,非常容易造成内存泄露。

错误形式:processWidget(std::tr1::shared_ptr<Widget>(new Widget),priority());

正确形式:std::tr1::shared_ptr<Widget> pw(new Widget); //事先将newed对象置入智能指针之中

                 processWidget(pw,priority());

说明:

错误形式的表达式核算涉及三个步骤:

1>调用priority

2>执行new Widget

3>调用tr1::shared_ptr构造函数

C++不同于C#或是Java,其构造函数的调用没有绝对的先后顺序。

如果此时new Widget先被执行,而调用priority出现异常,则指针便没办法再置入智能指针中,以实现动态释放的功能。此时即产生内存泄漏。

★意识形态11:函数设计时尽量使用址传递替代值传递

错误形式:bool Fun(Student s);

正确形式:bool Fun(const Student& s); //Student为自定义类型

说明:

1>值传递会导致构造函数与析构函数的多次不必要调用,成本较高。

2>值传递会导致对象在函数生命周期结束时被释放掉,容易丢失信息。

3>值传递容易导致意外的对象切割(derived class)现象。

4>使用const修饰的址传递方式,没有额外的构造析构函数调用,效率高,且对象在函数内部不允许变更,安全性好。

注意:该条款不适于内置类型及STL,仅适用于自定义类型!

★意识形态12:成员变量尽量声明为private

说明:类内部的成员变量往往声明为私有,并辅之于相应的属性函数,以提供更加细微的访问权限。同时,客户不会因为服务类内部一个变量的取消而导致大规模的代码变更,为工程后期的维护提供弹性。

注意:不要考虑protected,它的破坏度和public成员类似。

 

 

 

 

分享到:
评论

相关推荐

    tencent-vscode-coding-copilot-enterprise-2.9.1.7z

    首先,文件标题为“tencent-vscode-coding-copilot-enterprise-2.9.1.7z”,这表明该压缩包是腾讯公司针对Visual Studio Code开发的一款名为Coding Copilot的集成开发环境(IDE)扩展插件的版本2.9.1的压缩包。...

    chunked-coding-converter-1.0.jar

    已经打包好的,可直接导入burp使用

    sei-cert-cpp-coding-standard-2016-v01_c_安全编程_sei-cert-c-coding_S

    《sei-cert-cpp-coding-standard-2016-v01_c_安全编程_sei-cert-c-coding_S》这份文档是SEI CERT C++编码标准的2016年版本,专注于C和C++编程语言的安全实践。SEI CERT(Software Engineering Institute's Computer ...

    sei-cert-c-coding-standard-2016-v01.pdf

    C 编码规范,描述一些规范,实际编码中注意的问题. SEI CERTC Coding StandardRules for Developing Safe, Reliable, and Secure Systems

    Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC

    Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 This document provides an overview of the coding tools defined in HEVC Version 1 and the Range Extension...

    Alibaba-Java-Coding-Guidelines-2.1.1

    Alibaba_Java_Coding_Guidelines-2.1.1 是阿里巴巴集团发布的Java编程规范的一个版本。这个规范旨在统一阿里巴巴集团内部Java开发者的编码习惯,提升代码的可读性、可维护性和性能。 该规范通常包含多个方面,如...

    C++编程规范-101条规则(C++ Coding Standards)中文版 part2

    C++ 编程规范-101条规则(C++ Coding Standards)中文版,由ISO C++标准委员会主席Herb Sutter写的,值得 一看.

    sei-cert-cpp-coding-standard-2016-v01_c_安全编程

    《sei-cert-cpp-coding-standard-2016-v01_c_安全编程》这份文档是SEI(Software Engineering Institute)发布的C++编程安全标准,旨在帮助开发者遵循最佳实践,编写出更安全、可靠的C++代码。SEI CERT C++编码标准...

    zencoding-vim-master.zip

    标题中的"zencoding-vim-master.zip"是一个与Vim编辑器相关的压缩文件,它包含了一个名为"zencoding-vim-master"的项目或插件。Zencoding(也称为Zen Coding)是一种快速编写HTML和CSS的生产力工具,它允许用户通过...

    C++编程规范-101条规则(C++ Coding Standards)中文版 part1

    C++ 编程规范-101条规则(C++ Coding Standards)中文版,由ISO C++标准委员会主席Herb Sutter写的,值得一看.

    最新版Alibaba_Java_Coding_Guidelines-2.1.1.zip离线包

    最新发布的《Alibaba Java Coding Guidelines 2.1.1》是对Java开发人员的一份重要指南,旨在提升代码质量,保证项目稳定性和可维护性。这份规范不仅涵盖了基础的编程习惯,还涉及到设计模式、异常处理、多线程等高级...

    C++编程规范-101条规则(C++ Coding Standards)中文版 part3

    C++ 编程规范-101条规则(C++ Coding Standards)中文版,由ISO C++标准委员会主席Herb Sutter写的,值得 一看.

    最新版Alibaba_Java_Coding_Guidelines-2.0.2.zip离线包

    阿里巴巴作为中国领先的互联网公司,其发布的《Alibaba Java Coding Guidelines》是业界广泛采纳的编码规范之一。最新版2.0.2对原有的规范进行了更新和完善,适用于IDEA 2018.1.6版本的开发者使用。 首先,这份编码...

    Laravel开发-php-coding-standards-enforcer

    这就是"Laravel开发-php-coding-standards-enforcer"工具的作用所在。 这个工具旨在帮助开发者在PHP和JavaScript编程中严格执行编码标准。编码标准是指导程序员编写清晰、一致、易于理解和维护的代码的规则和约定。...

    Coding-Projects-in-Python.pdf.pdf

    Coding-Projects-in-Python.pdf

    Nikeshbajaj-Line-Coding-Waveform-Coding-NRZ.zip

    标题 "Nikeshbajaj-Line-Coding-Waveform-Coding-NRZ.zip" 提到的是关于线编码、波形编码以及NRZ(Non-Return-to-Zero)技术的一个资料包。线编码是数字通信系统中的一种重要技术,用于将二进制数据转换为适合在物理...

    algorithmzuo_coding-for-great-_1741867522.zip

    从给出的文件信息来看,压缩包名为"algorithmzuo_coding-for-great-_1741867522.zip",这里面包含了两个子文件,一个是"algorithmzuo_coding-for-great",另一个是"coding-for-great-offer-main"。虽然文件名本身...

    Alibaba Java Coding Guidelines-2.1.1.rar

    《阿里巴巴Java编码规范2.1.1》是阿里巴巴开源的一款针对Java编程的代码规范指南,旨在提高代码质量、提升开发效率、确保代码可读性和可维护性。此规范被广泛应用于阿里巴巴集团及其关联公司,同时也成为业界参考的...

    coding-264-master.zip

    koa + 公众号,前后台开发的代码 ,请查看,有些技术问题,请联系,视频暂时不能上传,如果想看视频,请联系

Global site tag (gtag.js) - Google Analytics