代码大全阅读笔记(三)

一  使用指针的一般技巧

  错误的使用指针,给一个坏了的指针赋值时,会把数据写入本不该写值的内存区域。这称为内存破坏而更正指针错误的大部分工作量是找出它的位置。

正确地使用指针要求程序员采用一种双向策略。第一,要首先避免造成指针错误。指针错误很难发现,因此采取一些预防性措施是值得的,其次,在编写代码后尽快的找出错误来

二 寻找错误的方法

  1 把指针操作限制在子程序或者类里面

  2 同时声明和定义指针

  3 在使用指针之前检查指针

  4 先检查指针所引用的变量再使用它

  5 用狗牌字段检测损毁的内存(“标记字段”或者“狗牌”是指你加入结构体内的一个仅仅用于检测错误的字段。在分配一个变量的时候把一个应该保持不变的数值放在它的标记字段里)

  6 增加明显的冗余(操作限制在子程序里)

  7 用额外的指针变量来提高代码清晰度

  8 简化复杂的指针表达式,可以画一个图

  9 按照正确的顺序删除链表中的指针

  10 分配一片保留的内存后备区域

  11 粉碎垃圾数据

  12 在删除或者释放指针之后把它们设为空值

  13 在删除变量之前检查非法指针

  14 跟踪指针分配情况

三 表驱动法

  采用查表法可以极大的简化程序,令程序变得逻辑简单,直观易懂

四 对于C++,指针(*)和引用(&)的区别

  最重要的区别是引用必须总是引用一个对象,而指针则可以指向空值,而且引用所指向的对象在该引用初始化之后不能改变;把指针用于“按引用传递”参数,把const引用用于“按值传递”参数,C++向子程序传递参数的默认方式是传递值而不是传递引用; 对于不可修改的对象成员引用使用A.a,对于可以修改的对象成员使用A->a;

五 何时使用foreach

  Foreach循环或其等价物很适用于对数组或者其他容器的各项元素执行操作

六 一些应该避免的想法

  1 代码越短,机器运行速度就越快,占用资源就越少

  2 不要认为特定运算可能比其他的快,代码规模会小,要实际去测试

  3 不必随时随地进行优化

  4 程序的运行速度高效要保证其正确性

时间: 2024-07-28 21:18:17

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

代码大全阅读笔记01

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

代码大全阅读笔记(二)

代码大全这本书只看懂了一部分,现只对最有收获的部分写入笔记里 第七章 创建子程序的正当理由 (1)降低复杂度;(2)避免代码充分;(3)支持子类化;(4)隐藏顺序;(5)隐藏指针操作;(6)提高可移植性;(7)简化复杂的布尔判断;(8)改善性能 对于过于简单的代码写成子程序的两大理由:1 可以增加程序的可读性 2简单程序可能变成复杂程序 1 在子程序层上设计 内聚性强调把一件事做好,不再做其它任何事情这样做的好处是得到更高的可靠性 顺序上的内聚性是指在子程序内包含有需要按特定顺序执行的操作,这些

代码大全阅读笔记02

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

代码大全阅读笔记03

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

《梦断代码》阅读笔记三:全书总结

昨天终于把梦断代码读完了,时间很赶,读的很急,很多地方没有仔细的推敲和思索.但是还是能够理解本书的主旨意义,还是有自己的一番体会和感想的. 正如作者所说,“这是一个关于一队人马并肩托起代码大石.欲将其推上山顶,虽历经磨难,但仍奋力创造某种有用.丰富且持久之物的故事”,读罢想来也许最大的收获是对软工程有了更加深刻的理解. 我们觉得软件难以对付,是因为它不可见,不可见也并非唯一问题,我们也看不见电力.磁力或重力,但却能为多数实用目的可靠地预测其行为,可是我们没有理论可以用来计算对软件尺寸.性能和复杂

《梦断代码》阅读笔记三

这本书终于读完啦~说实话,其实里面很多东西理解的还不是很透彻,以后找机会一定会再去看.第一遍读了<梦断代码>之后,我真的觉得软件开发过程是抽象艰巨的一个事情,我们自以为很有把握,但实际上真的是很难掌控. 就比如说自己吧,之前在做程序的过程中被大大小小无数的问题折磨,碰到这本书的时候,就觉得找到知音了,原来很多问题同样也折磨着这些技术牛人们.比起软件工程的教科书,这本书更加结合实际,书里内容不是放之四海皆准的真理,也不是药到病除的良方,最多只是事实和总结. 另外这个团队的问题吧真的是一个很重要的

构建之法阅读笔记三—结对编程

构建之法阅读笔记三——结对编程 何谓结对编程,结对编程就是程序员肩并肩,平等的,互补的进行开发工作,他们使用同一台电脑,编写同样的程序,一起分析,一起设计,一块交流想法. 然而我以前却并不是这样做的,我以前喜欢在没人打扰的环境下写代码,我觉得有人在我身边看着,会影响我的思路,还有我个人自尊心比较强,不太喜欢被人指指点点,所以每次都是,我写完代码之后,自己先找自己的bug,每当自己实在找不到之后,才会请教大神,但是有时候可能由于自己的能力不足,往往一个很简单的问题,我自己发现就会花费很久的时间,让

代码大全学习笔记(什么是构建)

  构建有时也被认为是"coding"或者"programing".编码算不上是最贴切的词,因为它有一种"把已经存在的设计机械化的翻译成计算机语言"的意味,而构建并不是机械化的,需要可观的创造力和判断力,人们常常用编程代替构建.   构建的步骤: 1.验证前面的工作已经完成(如定义问题,需求分析). 2.确定如何去测试所写的代码. 3.设计并编写类或者子程序. 4.创建并命名变量和具名常量. 5.选择控制结构,组织语句块. 6.对你的代码进行单元

代码大全读书笔记 - 开篇

说起来,<代码大全>这本书书名实在恶俗.在我推荐给展鸿的时候,他说"雾草,这名字看着就像天朝地摊那种XX全书一类的山寨书-" 是的,其实买这个书的原因就是京东买100减30,我买了10块钱的东西,凑了一下单,书到手之前还以为是代码清单,或者以前ACM模板一样的书,甚至买来的一个月里面都拿来当枕头(足足10+cm厚). 这个周末偶然的翻开,才发现,世界上竟然有如此精彩的书,而且很多东西讲的虽然是软件项目,但给了我很多引申到其他东西上面的灵感.很多地方我读到之后,都会兴奋的心跳