《代码大全》第五部——代码改善

工欲善其事,必先利其器。
本文主要是解释通过代码优化,提升代码性能的操作;也主要是对所学知识的一个整理。

一、软件质量概述

我们在软件的开发过程应该需要对变更控制,有效地管理和控制变更是实现代码高质量的关键一步;我们要提升软件质量,还需要对结果进行量化,只有进行结果的量化才能有效地反馈计划的成功与否;在开发过程中,制作原型也是很重要的一步,原型是指开发出系统中关键功能的实际模型,构建原型能产生更完善的设计,更贴近用户的需求,以及更好的可维护性。软件质量的普遍原理就是改善质量以降低开发成本。

二、开发者测试

软件测试主要包括:单元测试、组件测试、集成测试、回归测试、系统测试。

  • 开发者在编码的过程中推荐的测试方法
  • 对每一项相关的需求进行测试,以确保需求都已经被实现
  • 对每一个相关的设计关注点进行测试,以确保设计已经被实现。
  • 用基础测试来扩充针对需求和设计的详细测试用例
  • 使用一个检查表,其中记录着你在本项目迄今为止所犯的,以及在过去的项目中所犯的错误类型

测试技巧

  • 等价类划分
  • 边界值分析
  • 采用手工检查的测试用例(简单的对数据进行手动计算和期望值做比对)

还有一些就是开发测试中的一些小tips:

  • 错误并不是均匀分布在项目当中,还是符合28远程
  • 应当在开发中通过工具加快自己开发的速度和准确性

三、调试

开发者在开发的同时还应当有相应的技巧对代码进行调试。

下面介绍查找代码缺陷的一些调试小技巧

  • 逐步缩小嫌疑代码范围
  • 对之前出现过缺陷的类和子程序保持警惕
  • 检查最近修改过得代码
  • 增量式集成
  • 同其他人讨论问题
  • 调试的时候一次只做一个改动

四、代码调整策略

首先我们需要搞懂的是影响代码的效率的几个低效之源

  • 分页
  • 输入/输出操作
  • 系统调用

因此我们在开发过程,可以从这些角度进行优化。

那么我们应该如何去对性能进行调整,应该遵循以下这种方式,稳健地进行代码的性能提升

  • 做性能调整之前先要保留调整之前的版本,这样子方便回退;
  • 再者每进行一次调整就应该测试一次,观察性能有没有改善,如果没有,那么回退到调整之前的版本。

需要注意的是:性能测量应当要精确,应当用程序分配给程序的CPU时钟计算,而不是日期时钟

五、代码调节技术

主要介绍如何进行代码的优化方法。

主要讲提高代码运行速度的方法,同时对如何减小代码的资源占用给出建议

  • 在知道答案之后停止判断
  • 按照出现的频率来调整判断顺序
  • 用查询表替代复杂表达式,如果存在若干个结果,我们可以通过直接将结果写入表中的方法来避免直接对结果的计算,从而减少开销,可以直接查表
  • 使用惰性求职,即在需要该数据在计算,而不是一下子都计算出来
  • 将判断外提,尽量减少在循环语句中的操作
  • 将循环展开,也可以提升性能
  • 设置哨兵值,也就是在得到所需要结果的时候能够及时跳出循环,而不是继续执行
  • 把最忙的循环放在最内层
  • 使用整型数而不是浮点数
  • 使用缓存机制
  • 小心系统函数,因为系统函数的开销是很大的
  • 用低级语言重写代码

原文地址:https://www.cnblogs.com/leezoey/p/10430345.html

时间: 2024-10-16 13:53:20

《代码大全》第五部——代码改善的相关文章

DotNet,PHP,Java的数据库连接代码大全(带演示代码)

C#数据库连接字符串 Web.config文件 <connectionStrings> <!--SQLServer数据库连接--> <add name="conn_sqlserver" connectionString="server=127.0.0.1;uid=testuser;pwd=testPwd;database=db_test;pooling=true;min pool size=10;max pool size=1024;connec

《代码大全2》读后感czz

经老师推荐,买了一本<代码大全2>,花了近3个月的时间看完了,看完后觉得还有很多值得回味的地方,而且每部分之后作者还推荐了不少经典书籍.所以,作个读书心得.全书的主题是软件构建,关于软件构建问题的方方面面均有涉及,共分7个部分,从软件构建前期准备,到语言层的一些问题,再到代码完善,系统考虑以及软件工艺等等.以下分别进行简单说明. 第一部分是打好基础,本部分主要是软件构建前期的工作,以及对一些基本概念的介绍,具体包括如何选择编程语言和构建实践方法,如何理解软件开发的过程.软件开发本质上说就是工程

代码大全阅读笔记(二)

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

阅读《代码大全》(第二版)体会小结

这一次阅读了著名的<代码大全>(第二版).全书虽然章节众多,但是主要就是几个大部分,这些部分我大多有一些浅显的了解但还未深入,当然也有一些全新的体验,例如表驱动法.全书内容丰富而详细,我在阅读的其中问题并不是太多,只不过很多的内容都觉得了解的还太浅,需要更多的实践以及阅读去体会.在这里记录下的也就是一些自己的体会,主要是对书中一些论断的不同看法与讨论,大部分是关于面向对象和结构化设计的内容:以及对于全新接触的表驱动法的学习体会. Question 1: “7.1 创建子程序的正当理由”中,提到

代码大全阅读笔记01

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

《代码大全》读书笔记

初读云风大大的读书笔记,收获蛮多,云风大大的读书笔记只记录了1到442页的.我直接读了400页之后的,也做了后续的读书笔记.<代码大全>第二版确实是一本好书,每个人读了能领悟的东西并不一样,本读书笔记是博主略有领会的东西,分享出来是希望没读此书的人有所收获,要是能引起你对<代码大全>的兴趣,去通读本书的话就更好了. 另附云风大大的1到442页读书笔记链接:http://blog.codingnow.com/cloud/CodeComplete P439 短路求值,更好的办法是使用嵌

[读书笔记-代码大全]前言

周杰伦有一首歌叫做<牛仔很忙>,蠢爸爸小星也有一首歌叫做<业务员很忙>,我既不是牛仔也不是业务员,但我从事的工作也很忙,我是一个程序员.扪心自问,似乎近几年都没有完整看完一本书的经历了.俗话说:读书,要先把书读厚.像<代码大全>这样"重"量级的计算机读物,900多页的个头,我的天啊!如果想把它放在书包里作为"口袋书",以方便随时随地拿出来阅读,的确是个愚蠢的做法:但如果放在公司的话,我又担心它会沦为午休时候的枕头--(扯远了 -_

CSS颜色代码大全

CSS颜色代码大全 颜色代码表(一): EEEEEE FFCCFF FF66FF FF00FF DDDDDD FFCCCC FF66CC FF00CC CCCCCC FFCC99 FF6699 FF0099 BBBBBB FFCC66 FF6666 FF0066 AAAAAA FFCC33 FF6633 FF0033 999999 FFCC00 FF6600 FF0000 888888 CCCCFF CC66FF CC00FF 777777 CCCCCC CC66CC CC00CC 666666

代码大全阅读笔记03

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

Dreamweaver网页设计代码大全

Dreamweaver网页设计代码大全Dreamweaver网页设计HTML语法大全由51RGB小编Q群162542073整理分享: 网页设计视频网站链接http://www.51rgb.com/mproductzh.aspx?classid=31 <!> 跑马灯 <marquee>...</marquee>普通卷动 <marquee behavior=slide>...</marquee>滑动 <marquee behavior=scro