`
hanyh
  • 浏览: 235350 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

防御性编程

阅读更多
一,态度是指引到优秀的基础
二,方法和策略是达到优秀的条件
     因为现实情况是:需求会经常变革,设计不到位,增加功能,人员流失,团队士气...这 让我们并不是在一个”舒适“的环境怡然自得的开发,而是在战场,所以需要一些战斗的技巧和策略,需要聪明的战斗。
     所以:我们学习自己过去的错误从中获得智慧,我们学习他人的错误教训,我们跟随他人的成功之道。
三,我们必须热爱代码,热爱这一份创造的事业
     以前:是算法,软硬件精通的英雄
     现在:是组合的大师,平衡的大师
     未来:是平衡


四,基于著名的:凡是可能出错的,一定会出错
基于要做一名优秀程序员的目标

我们彼此猜忌,这情非得已,是防止背叛的唯一武器。
===>防御性编程
0,现实世界不完美
1,不要作任何设想(假设)一定不会出现什么...
2,不要仓促的写代码
3,不要相信任何人
4,保持简单清晰
5,编译时打开所有的警告
6,使用静态分析工具
7,使用安全的数据结构
或安全的使用危险的数据结构
char copy(const char *src)
{
  char *buf = new char[10]
  strncpy(buf,src,10);
  //strcpy(buf,src); dangerous
  return buf;
}

8,检查所有返回值
9,小心处理资源(内存,文件句柄,锁...)
10,声明位置初始化变量
避免不同编译器的不同行为
11,使用标准的语言工具
不要使用特殊特性
12,变量声明位置接近使用位置
13,使用诊断信息日志工具
14,小心强制转换
出错地点之一,不论PHP,C,JAVA...
15,其它
数组界
能常量的就常量
提供默认行为
====>约束
1,前置条件
2,后置条件
对多返回出口不好作
3,不变条件
4,断言
约束------>design by contract
5,注意约束不要引入副作用!!!
6,约束的内容即一些需要检测的内容
数值界,指针不为空,文件句杯有效.......

===============
对业务逻辑,有些约束可以换用“更适合”的数据类型来表达(避免约束语句,类型是更加底层的约束)
约束写在函数体内比较好

一切好的习惯是需要训练的,因为维持整个“有序”状态,是需要能量的,我们处在熵增大的世界,即不维持会达到最大混乱状态的世界
分享到:
评论

相关推荐

    防御性编程之三

    防御性编程是一种软件开发策略,旨在提前预测并防止潜在错误,从而提高软件的稳定性和可靠性。在本主题“防御性编程之三”中,我们将会深入探讨如何在C++编程中利用源码和工具来实现有效的防御性编程。这篇博客文章...

    【善于防守-健壮代码的防御性编程技巧】--《编程匠艺》

    防御性编程:顾名思义,防御性编程是一种细致的,谨慎的编程方法。为了开发可靠的软件产品,我们要谨慎地设计系统的每个细节,便是其能尽可能的“保护”自己,,我们通过明确的代码中增加很多的假设,当假设在现实的...

    safe-utils:防御性编程助手方法将改变您的生活

    简单的帮助程序方法,使您无需担心防御性编程即可访问属性。 这个软件包已经在Node.js和浏览器(React风格的应用程序)的生产环境中使用了大约4年,没有出现问题。 safeGet 用箭头函数包装您的访问器,并将其传递...

    ChemistrySyntaxChecker:一个简单的语法检查器项目,作为防御性编程的练习

    化学语法检查器一个简单的语法检查器项目,作为防御性编程的练习。 此语法检查器不会将元素名称与元素周期表匹配,而是设置有效化学语法的标准。 有效的化学元素的范围为 1 到 3 个字符,第一个字母大写,其余字母...

    C++编程思想(第二卷)

    第2章 防御性编程 第二部分 标准C++库 第3章 深入理解字符串 第4章 输入输出流 第5章 深入理解模板 第6章 通用算法 第7章 通用容器 第三部分 专题 第8章 运行时类型识别 第9章 多重继承 第10章 设计模式 第11章 并发

    C++编程思想(Thinking in C++)完美版pdf

    第2章 防御性编程 第二部分 标准C++库 第3章 深入理解字符串 第4章 输入输出流 第5章 深入理解模板 第6章 通用算法 第7章 通用容器 第三部分 专题 第8章 运行时类型识别 第9章 多重继承 第10章 设计模式 第11章 并发...

    c++编程惯用法

    一个重要的编程惯用法是防御性编程,即在设计和实现过程中考虑到程序可能遇到的异常情况,并采取措施加以预防。书中指出了这种编程方式的必要性,并给出了一些实现策略。 代码的可维护性和可读性也是书中强调的内容...

    微软编程标准规范(含C++/VC/C#)

    4. **流行性**:示例代码应反映现代编程实践,比如使用Unicode、错误处理机制、防御性编程以及跨平台兼容性等。 #### 1.2 术语 文中涉及的专业术语包括但不限于: - **C++**:一种广泛使用的面向对象编程语言。 - ...

    主动防御源代码

    一份C++的源代码!! 系统主动防御源代码

    defensive database programming

    作者亚历克斯·库兹涅佐夫(Alex Kuznetsov)是一位知名的数据库专家,他通过本书分享了一系列实用的技术和策略,帮助读者理解并应用防御性编程原则来构建更加可靠的应用程序。 #### 什么是防御性数据库编程? ...

Global site tag (gtag.js) - Google Analytics