《Code Complete》ch.8 防御式编程】的更多相关文章

WHAT? 主要思想:子程序不应因传入参数错误而被破坏 WHY? 保护程序免遭非法输入的破坏 HOW? 断言 assert denominator != 0 : "denominator should not be 0"; // 启动VM时需要 -ea 参数用以启动assert功能 只用于开发.维护阶段 用错误处理代码来处理预期会发生的状况,用断言来处理绝不会发生的状况 避免把需要执行的代码放入断言中 用断言来注解并验证前条件和后条件 错误处理技术 返回中立值(当对返回结果准确性要求较…
http://www.ityran.com/archives/2105 本文由子龙山人原创,泰然授权转载,转载请注明出处并通知子龙山人! 声明:防御式编程是提高程序代码质量的一种手段,它不能算是真正意义上的模式.但是,这里,我还是要给它冠之以“模式”二字. 原因有2: 1.cocos2d-x的框架源代码大量采用了防御式编程技术,用来确保框架的代码质量和稳定性. 2.标题党,引起大家对于防御式编程的重视.特别是当大家给cocos2d-x贡献源代码的时候,更应该要注意保证代码质量.因为,王哲大大在r…
概念 EAFP:easier to ask forgiveness than permission LBYL:look before you leap 代码 # LBYL def getUserInfo(user): if user == None: print('person must be not None!') print(user.info) # EAFP def getUserInfo(user): try: print(user.info) except NameError: pri…
1.类的定义以及实例化 # 类定义 class p: """ this is a basic class """ basicInfo={"name":"lxh","nation":"China"}; # 类成员变量 def __init__(self): # 类成员函数需要传入self关键字 """ this is a init func…
最近在看code complete,学习了一些东西,作为点滴,记录下来. 关于类: 类的接口抽象应该一致 类的接口要可编程,不要对类的使用者做过多的假设.不要出现类似于:A的输入量一定要大于多少小于多少,一定要在某个函数前call之类的限制,而应该在assert等地方加入这些判断,让代码去做限制,而不是注释. 代码阅读的次数要比写的次数多得多 类的成员变量表征类拥有怎样一个属性 类的继承表征类还可以有另一个特殊的版本 类用到的其他类的次数叫做扇入(fan in),越少越好 要在构造函数中对所有的…
一.<代码大全>优先阅读参考顺序: 自学编程人:第07章 高质量的子程序 低年级学生:第11章 变量命名的力量 高年级学生:第08章 防御式编程 初级程序员:第18章 表驱动法 高级程序员:第04章 关键的构建决策 项目经理人:第33章 个人性格 标准指定人:第32章 自说明代码 二.内容涵盖 软件架构.设计方法.类.子程序.变量命名.控制结构.代码格式.测试用例…
一般的编程语言建议是进行防御式编程,在开始处理之前先检查所有参数的合法性.但实际上,对数据库编程而言,尽量同时做几件事情的进攻式编程有切实的优势.*/ --我们SP中常见的防御式编程示例:--场景一:判断数据是否存在 注:C为一个不可空字段 IF NOT EXISTS( ) FROM A WITH(NOLOCK) WHERE ID = @ID ) BEGIN SET @Response = 'E' GOTO ErrorHandle END ) @B = C FROM A WITH(NOLOCK)…
Code Complete 读后总结和新的扩展阅读计划 用了一年时间终于将代码大全读完了,在这里做一个简单的总结,并安排下一阶段的扩展阅读计划. 1.选择代码大全作为我程序员职业入门的第一本书,我认为是很正确的.这本书语言生动,擅于用隐喻说明深刻的编程原理,虽然并不是写给新手看的,但作为一个新手,我依然从中学到了很多.    2.这本书有很多一针见血的论述:设计是一个启发式过程:编程的最大难题是解决其复杂性:要深入一种语言编程而不是在一种语言上编程,等等.    3.实践是这本书的核心,它提供了…
代码大全也读了好几个月了,一开始读中文版,到现在慢慢尝试着读原版,确实感受到了"每天进步一点点"的魅力.遗憾的是没有从一开始就做阅读记录,总有不能尽兴和思路不清之感.确实,就像项目需要版本控制系统,读书也需要时时记录变化.所以,今天新开一贴,作为自己的阅读记录之用. 初步的想法是记录读到哪里,有什么疑问,以及原文中精炼的表述. 2014-01-27    190   Chapter 8 : Defensive Programming 问题:JAVA的断言是如何实现的?如果要写一个自己的…
jQuery插件编写及链式编程模型小结 JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我们就来看看如何把我们常用的功能做出JQuery插件,然后像使用jQuery那样来操作DOM.  一.jQuery插件开发快速上手 1.jQuery插件模板 关于jQuery插件的编写,我们可以通过为jQuery.fn增加一个新的函数来编写jQuery插件.属性的名字就是你的插件的名字,其模板如下:…