C++ 编程规范101读书笔记(2)设计风格

本文阐述了软件设计中的关键原则,包括高内聚低耦合、单一职责原则、保持简单清晰、考虑可伸缩性等,同时提供了违反这些原则的典型例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这部分主要涉及设计的风格的事宜:基本观点还是那句话,高内聚,低耦合,扩展性强,简单


第5条 一个实体应该只用一个紧凑的职责

          一次只解决一个问题。一个实体只负责一件事。

         一个实体职责过多,导致实体多重性格,难控制

        典型反例:

             realloc() 函数

            C++ basic_string 类


第6条 正确,简单和清晰第一

           KISS(keep it simple oftware)

         典型反例:

             不必要的C++ 操作符号重载

            使用临时变量作为构造函数的参数


第7条 编程中应知道何时和如何考虑可伸缩性

         (1)使用灵活的,动态分配的数据,不要使用固定大小的数组

         (2)了解算法的实际复杂性

         (3)优先使用线性算法或者尽可能快的算法

         (4)尽可能避免劣于线性复杂度的算法

         (5)永远不要使用指数负载型的算法,除非你已经山穷水尽了。

  测试数据表明优化是非常必要的且重要。


第8条 不要进行不成熟的优化


第9条 不要进行不成熟的劣化


第10条 尽量减少全局和共享数据

      共享会导致冲突:避免共享数据,尤其是全局数据。共享数据会增加耦合度,提高维护成本,降低性能

     全局名字空间中的对象名称会无缘全局名字空间

     共享数据对单元测试不利

    共享数据和全局数据会减少多线程和多处理器环境的并行性

    尽量降低类间的耦合性,尽量减少交互


第11条 隐藏信息


第12条  懂得何时和如何进行并发性编程

         尽量减少共享数据,安全地共享必须共享数据

         安全法则:

         (1)参考目标平台的文档,了解该平台的同步化原语(原子整数,内存障珊,互斥体)

          (2)把平台原语用自己设计的抽象类封装

          (3)确保正在使用的类型在多线程中使用是安全的 


       外部加锁

      内部加锁(是否为共享对象类,控制加锁的粒度)

      不加锁(只读对象)


第13条 确保资源为对象所拥有。使用显式的RAII和智能指针

      不要在一条语句中分配一个以上的资源。RAII(resource acquiresition is intialization)

      每当处理需要配对的获取、释放函数调用的资源时,应该把该资源封装在一个对象中。

     确保所有资源都为对象所有,用智能指针来保存动态分配的资源,同样应该显式地执行资源分配。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值