最近在看code complete,学习了一些东西,作为点滴,记录下来。

关于类:

类的接口抽象应该一致

类的接口要可编程,不要对类的使用者做过多的假设。不要出现类似于:A的输入量一定要大于多少小于多少,一定要在某个函数前call之类的限制,而应该在assert等地方加入这些判断,让代码去做限制,而不是注释。

代码阅读的次数要比写的次数多得多

类的成员变量表征类拥有怎样一个属性

类的继承表征类还可以有另一个特殊的版本

类用到的其他类的次数叫做扇入(fan in),越少越好

要在构造函数中对所有的成员变量初始化

如果需要类的构造函数是私有的,并强制规定只能有一个对象实例的话,需要用如下代码

class A:

private A(){..}

public static A GetInstance()

{

return m_A;

}

private static A m_A = new A();

....

如果有些类只有数据,没有行为(get ... set ..),这样的类真的就没有必要了

子程序:

在某些经常会用到的代码,应该成为一个子程序,避免重复

子程序应当小于200行

可以在子程序的参数前表明 _in_ _out_ Inout_等关键字

子程序参数小于7个

防御式编程:

当用户的输入非法时,怎么处理。

几种方法:assert, error handle, exception, barrier.

assert主要用于程序内部的错误

error handle是用于在用户输入了一个非法的值,程序内部除了返回错误,为了不导致程序无法运行下去,需要做的一些WA,例如,用上一次的值,返回一个错误代码,print trace log, 返回一个中立值等

程序的正确性与鲁棒性是trade off

可以分层级来处理错误,如,底层代码只负责报告错误,由高层代码统一处理错误

barrier的方法是说,设定一个隔离层,专门对输入量进行validate,如果满足条件后,进入系统,则之后用assert

伪代码编程:

这是一种有效的编程方法,很多初级程序员的编程方法是这样的,先东平西凑,然后通过运行来看代码是否正常工作,这种开发方法效率低,应当等代码自己确认无误之后,再进行编译与运行,请避免在匆忙中完成代码

变量:

一个变量只表示一个意思,不要说int a ,当a <-1时表明有错误。。这时候,应当加一个变量

code complete part1的更多相关文章

  1. 重读 code complete 说说代码质量

    重读code complete 说说代码质量 2014年的第一篇文章本来计划写些过去一年的总结和新年展望,但是因为还有一些事情要过一阵才能完成,所以姑且不谈这个,说说最近重读code complete ...

  2. Code Complete 读后总结和新的扩展阅读计划

    Code Complete 读后总结和新的扩展阅读计划 用了一年时间终于将代码大全读完了,在这里做一个简单的总结,并安排下一阶段的扩展阅读计划. 1.选择代码大全作为我程序员职业入门的第一本书,我认为 ...

  3. Code Complete阅读笔记(三)

    2015-05-26   628   Code-Tuning Techniques    ——Even though a particular technique generally represen ...

  4. Code Complete阅读笔记(二)

    2015-03-06   328   Unusual Data Types    ——You can carry this technique to extremes,putting all the ...

  5. 《Code Complete》ch.24 重构

    WHAT? 重构(refactoring),Martin Fowler将其定义为“在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解并便于修改”. WHY? 神话:一个管理很完善的软件 ...

  6. 《Code Complete》ch.23 调试

    WHAT? 调试——发现错误的一种手段 WHY? 相对于不善于调试的程序员,善于调试的程序员只需要前者1/20的时间就可以找出问题所在 HOW? 科学的调试方法 把错误的发生稳定下来:假设-证实/证伪 ...

  7. 《Code Complete》ch.21 协同构建

    WHAT? 所有的协同构建技术都试图通过这样那样的途径,将展示工作的过程正式化,以便将错误暴露出来 WHY? 提高缺陷检出率,从而缩短开发周期,降低开发成本 发现不明显的错误信息,如不恰当的注释.硬编 ...

  8. Code Complete阅读笔记(一)

    代码大全也读了好几个月了,一开始读中文版,到现在慢慢尝试着读原版,确实感受到了"每天进步一点点"的魅力.遗憾的是没有从一开始就做阅读记录,总有不能尽兴和思路不清之感.确实,就像项目 ...

  9. Code Complete 笔记—— 第二章 用隐喻来更充分理解软件开发

    在这章里面,提到的隐喻,类同于比喻(建模)的方法的去理解软件开发. 隐喻的优点在于其可预期的效果能被所有人所理解.不必要的沟通和误解也因此大为减低,学习与教授更为快速,实际上,隐喻是对概念进行内在化和 ...

随机推荐

  1. python2.7安装matplotlib遇到的问题及解决方法

    python2.7下import matplotlib报错 第一个报错是:缺少这个pyparsing-2.1.4.win32-py2.7.exe 直接下载安装就行 第二个报错是:缺少cycler 这个 ...

  2. ubuntu 13.04 telnet 详细配置

    1. sudo vi /etc/xinetd.d/telnet并加入以下内容:# default: on# description: The telnet server serves telnet s ...

  3. Google Authentication 机制原理

    Google Authenticator,谷歌身份认证器,Google公司推出的一款动态口令工具,旨在解决大家Google账户遭到恶意攻击的问题.该工具主要基于TOTP(Time-Based One- ...

  4. 【python】面向对象

    面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 类class   实例(i ...

  5. jquery.cookie.js 操作cookie实现记住密码功能的实现代码

    jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下.   复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...

  6. UML学习---交互

    在系统中,对象都不是孤立存在的,它们相互之间通过传递消息进行交互.交互是一种行为,由语境中的一组对象为达到某一目的而交换的一组消息构成.

  7. Jsonp理论实例代码详解

    什么是Json?JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - ...

  8. PHP开发调试环境配置(基于wampserver+Eclipse for PHP Developers )

    1 软件准 WampServer 下载地址:http://www.wampserver.com/en/#download-wrapper    我下的是 里面包含了搭建PHP必须的4个软件:   1. ...

  9. jython安装

    下载了jython后:http://www.cr173.com/soft/9719.html 这是我当时下载的网站 官网很慢开始->运行->cmd->打开dos命令窗口,转到jyth ...

  10. MyEclipse 10.7.1 最新版官网下载地址

    MyEclipse 10.7.1(Windows): http://downloads.myeclipseide.com/downloads/products/eworkbench/indigo/in ...