代码大全阅读笔记(二)

代码大全这本书只看懂了一部分,现只对最有收获的部分写入笔记里

第七章 创建子程序的正当理由

  (1)降低复杂度;(2)避免代码充分;(3)支持子类化;(4)隐藏顺序;(5)隐藏指针操作;(6)提高可移植性;(7)简化复杂的布尔判断;(8)改善性能

  对于过于简单的代码写成子程序的两大理由:1 可以增加程序的可读性 2简单程序可能变成复杂程序

1 在子程序层上设计

  内聚性强调把一件事做好,不再做其它任何事情这样做的好处是得到更高的可靠性

  顺序上的内聚性是指在子程序内包含有需要按特定顺序执行的操作,这些步骤需要共享数据,而且只有在全部执行完毕后才完成了一项完整的功能

  通信上的内聚性是指一个子程序的不同操作使用了同样的数据,但不存在其他任何联系。

  临时的内聚性是指含有一些需要同时执行才放到一起的操作的子程序。

  过程上的内聚性是指一个子程序中的操作是按特定的顺序进行的。

  逻辑上的内聚性是指若干操作被放入同一个子程序中,通过传入的控制标志选择执行其中的一项操作。

  巧合的内聚性是指子程序中的各个操作之间没有任何可以看到的关联

2 好的子程序名字

(1)       描述子程序所做的所有事情

(2)       避免使用无意义的,模糊或表述不清的动词

(3)       不要仅通过数字来形成不同的子程序名字

(4)       根据需要确定子程序名字的长度

(5)       给函数命名时要对返回值有所描述

(6)       给过程起名时使用语气强烈的动词加宾语的形式

(7)       准确的使用对仗词

(8)       为常用操作确立命名规则

3 如何使用子程序参数

  1 按照输入-修改-输出的顺序排列参数

  2 在接口中对参数的假定加以说明

  3 把子程序的参数限制在大约七个以内

  4 考虑对参数采用某种表示输入,修改输出的命名规则添加i_等前缀

  5 为子程序传递用以维持其接口抽象的变量或对象

  6 确保实际参数与形式参数相匹配

4 函数和过程

  函数是指有返回值的子程序,过程是指没有返回值的子程序

  设置函数的返回值:1 检查所有可能的返回路径;2 不要返回指向局部数据的引用或指针

5 宏子程序

  用预处理器的宏语言编写子程序还需要一些特别的考虑

  eg  #define Cube(a) ((a)*(a)*(a))

  把含有多条语句的宏用大括号括起来;

  * 除非必要,否则还是应该避免使用这种技术

6 用给子程序命名的方法来给展开后代码形同子程序的宏命名,以便在需要时可以用子程序来代替宏

  Const可以用于定义常量

  Inline可以用于定义可被编译为内嵌的代码的函数

  Template可以用于以类型安全的方式定义各种标准操作,如min,max等

  Enum可以用于定义枚举类型

  Typedef可以用于定义简单的类型替换

7 內联子程序

Inline子程序要求在调用子程序的每个地方都生成该子程序的全部代码,这样无论inline子程序是长是短都会增加整体代码的长度

时间: 2025-01-15 19:56:20

代码大全阅读笔记(二)的相关文章

代码大全阅读笔记02

继续阅读代码大全这本书,感觉是好厚好难啃啊.刚刚开始读不久到了作者说把主要精力集中于构建活动,可以大大提高程序员的生产率.我想就一个项目来说,思路和设计是站着主导的地位的,你如果不能把思路理清,可能随时都有可能卡在那里,而一旦灵感来了,你就会想泉涌一样的来思路,我们也算是做了一个小的项目的了,虽然很low吧,但是好歹也算有点体会.我们总是在设计的时候会走投无路,不知所措,以至于每一次开始时都是没有思路起手都只能积压在那里,实在是不知道该怎么做.我觉得 P28 的那个食物链的例子更有说服力,健康的

代码大全阅读笔记01

又是一本经典的书<代码大全>,从豆瓣上看到了很多的好评,看了一点感觉大全确实是如其名,一路下来都是很实用的东西,有些虽然都接触到了,但是再看一遍仍旧是收益很大.首先,软件构建的核心就是管理复杂度.虽然书中有不少的篇幅来讨论变量.语句等等这些编程的基本要素,还包括代码改善和调整的策略和方法,可谓不无巨细.不过深入理解一下,这些内容都是围绕着上面这句话展开的,也就是软件构建的核心就是管理复杂度.而这一目标产生的根源就在于人脑智力同软件项目复杂程度之间的矛盾.书中常常会提到几个数字,差不多在6.7左

代码大全阅读笔记03

无论怎么拖也总是要做的,我感觉自己的拖延似乎是毫无意义的浪费时间,我的拖延挤出来的时间都是在干啥,这真是让我反思.好了继续读代码大全,我开始烦了已经,因为它太厚了.过渡工程,这个问题把握好并不容易.一方面,我们希望系统健壮,如果组成系统的各个部分只在最低限度满足健壮性要求,那么整体通常是达不到要求的.软件健壮性不取决于最薄弱的地方,而是等于所有薄弱环节的乘积.构架应该指出每个部分,程序员为了谨慎而宁可做过度工程,还是做出简单的能工作的东西就够了.有些东西是不应该过分花精力的,这个错误我们也犯过,

代码大全阅读笔记(三)

一  使用指针的一般技巧 错误的使用指针,给一个坏了的指针赋值时,会把数据写入本不该写值的内存区域.这称为内存破坏而更正指针错误的大部分工作量是找出它的位置. 正确地使用指针要求程序员采用一种双向策略.第一,要首先避免造成指针错误.指针错误很难发现,因此采取一些预防性措施是值得的,其次,在编写代码后尽快的找出错误来 二 寻找错误的方法 1 把指针操作限制在子程序或者类里面 2 同时声明和定义指针 3 在使用指针之前检查指针 4 先检查指针所引用的变量再使用它 5 用狗牌字段检测损毁的内存(“标记

代码大全学习笔记(二):第4-5章

1. 主要的构建实践 2. 软件构建中的设计是一个确定取舍和调整顺序的过程,处处都有tradeoff 3. 软件的首要技术使命就是 管理复杂度 将整个系统分解为多个子系统,子系统高内聚.低耦合,尽量减少在特定时间段所面临的复杂度,从而减少脑力负担 4. 高质量设计的具体特征: (1)   最小的复杂度:简洁.易于理解 (2)   易于维护:编程规范:命名.注释等 (3)   松散耦合 高内聚:类接口合理抽象.封装.信息隐藏 低耦合:减少各组成部分之间的关联 (4)   可扩展性 (5)   可重

《梦断代码》阅读笔记二

看完了前五章我更加佩服作者了,把做软件以及遇到的问题分析的鞭辟入里,接下来我有看了四章,谈谈我的感受: 作者通过对办公室中两条狗的管理联想到管理软件项目.谈到了选择和管理的问题.“奇客”,与计算机沟通易于与人类沟通.在软件管理中,协作不是马后炮,也不是无足轻重之事,它是工作的核心,决定采用何种工具和方法有可能成就或毁掉项目.面一章刚开始作者用自己的经历说明了程序员在开发软件时要充分考虑用户的需求.软件设计是一种设想用户需求并在软件结构中满足这些需求的创造性基础工作.从小项目开始,而且永远不要期望

寒假阅读笔记二

大型网站技术架构-阅读笔记二 模式:每一个模式描述了一个在我们周围不断发生的问题及该问题解决方案的核心.这样你就能一次又一次地使用该方案而不必做重复工作. 分层:将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统.分层时必须合理规划层次边界和接口,在开发过程中,严格遵循分层架构的约束,禁止跨层次的调用(应用层直接调用数据层)及你想调用(数据层调用服务层,或者服务层调用运用层). 分割:网站越大,功能越复杂,服务和数据处理的种类

构建之法--阅读笔记二

阅读笔记二—代码规范 代码的风格的原则就是:简明,易读,无二义性.我虽然是计算机系的学生,但是我以前却没有秉着这个原则来编写代码,现在阅读了构建之法后,我明白了如何让你的代码变得简明,更容易理解. 代码在编写的过程中注意: 用Tab键缩进 要注意行宽,最多限定100字符的行宽 在复杂的条件表达式中,用括号清楚地表达逻辑优先级 要注意断行与空白的{ }行,有明确的“{”和“}”来判断程序的结构 不要把过多的语句放在同一行上 对变量命名要有实际的意义 用下划线来分隔变量名字中的作用域标注和变量的语义

《逻辑思维简易入门》(第2版) 阅读笔记二

<逻辑思维简易入门>(第2版) 阅读笔记二 本周阅读的是<逻辑思维简易入门>的第三章,也就是说,本书的第一部分就已经读完了. 第三章.信念的优点 信念和负信念是人们在接受一个事物时一种心理态度,延伸来说也就是对事物的认知态度.因为我们在研究 逻辑思维的时候,都有一个前提:“以正常情况以及说话者真诚”,所以有人如果对于一件事物不做回应,我们可以认为这是一种既不相信,也不怀疑的的态度. 信念的优缺点有很多,在书中主要介绍了下面几种: 1.准确性 好的信念实在准确的表达事实,同样真的信念