静态检查(static checking)
- 软件建设Software Construction
- 静态检查static checking
- 主题
- 类型
- 静态类型
- 静态检查动态检查不检查
- 建议与非建议
- 目标
- 总结
- 静态检查static checking
软件建设(Software Construction)
静态检查(static checking)
主题
- 静态检查。
- 好软件的三个属性。
类型
类型是一组值,可对它们进行操作。java有几种原始类型:
- int
- long
- boolean
- double
- char等
以及对象类型:
- String
- BigInteger
java约定,原始数据类型是小写,而对象类型(Object Type)首字母大写。
操作一般有几种类型:
- 中缀、前缀和后缀操作。如a+b , –a , a++。
- 对象的方法。如bigint.add(bigint2)。
- 一个函数。如Math.abs(-1).
静态类型
java是一种静态类型语言。所有变量的类型在编译时期(程序运行之前)都已知,并且编译器可以推断出所有表达式的类型。例如a和b都是int类型,那么a+b也是int类型。IDEA或Eclipse在你编写代码的过程中这样做,因此你可以在你编程的过程中发现很多bug.
动态语言如Python,这种类型的检查需要在程序执行时才会执行。
静态类型是一种特殊的静态检查(static checking),意味着可在编译时期检车bugs。在本课程中很多点子都是为了消除bugs而存在的,而静态检查就是首选的点子,以下代码就会报错:
"5" * "6" //字符串之间不能进行相乘操作
静态检查、动态检查,不检查
一种语言提供:
- 静态检查:在程序执行之前自动被发现。
- 动态检查:程序执行期间被发现。
- 不检查:语言不帮你找到bugs,需要开发者自己去查看,解决错误。
静态检查可以发现:
- 语法错误。如额外的标点符号或者虚假的词语。
- 错误名称。如
Math.sine(2)
。 - 参数个数错误。如
Math.sin(20,30)
. - 参数类型错误。如
Math.sin("30")
. - 返回值错误。如函数要求返回int,而程序为
return "30"
。
动态检查可以发现:
- 不合法的参数值。如除法中,分母不能为0。
- 造型异常。
- 超出索引允许范围。
- 空指针异常。
obj.sayHi()
,obj为null
。
建议与非建议
建议
- 编写一些程序,进行一次测试。
- 注释好你代码所依赖的东西。如先决条件等。
- 充分利用静态代码检查。不要假设你的代码无bug,或者容易发现和修复。
目标
- safe from bug。现在表现正确,将来也表现正确。
- easy to understand。代码要能与将来的开发者沟通,因为他们要修复bug或者增加新功能。将来的开发者可能是你,如果你没有让你的代码易于理解,你将追悔莫及,反之则庆幸万分。
- ready to change。软件总在不断改变,一些设计使之易于改变。而一些代码只能丢弃或者重写。
总结
- safe from bug。静态检查在程序执行之前帮助我们排除error.
- easy to understand。类型已经明确表示,是故帮助我们理解。
- ready to change。静态检查让你容易改变代码,因为在你改变代码的时候,静态检查会明确其它需要一起改变的地方。如,int a = 100。如果你改成int a2 = 100。那么引用它的所有地方都报错。
参考文献
静态检查(static checking)相关推荐
- 软件构造-Reading 1:静态检查
大纲: 阅读1:静态检查 目标: 冰雹序列 计算冰雹序列 类型 静态类型 静态检查.动态检查.无检查 惊喜:原始类型并不是真正的数字! 阅读练习 数组和集合 迭代 方法 变化的值与重新分配变量 记录假 ...
- 代码静态检查工具汇总
静态代码扫描,借用一段网上的原文解释一下(这里叫静态检查):"静态测试包括代码检查.静态结构分析.代码质量度量等.它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行.代码 ...
- React——Flow代码静态检查
为什么80%的码农都做不了架构师?>>> Flow Flow是Facebook开源的静态代码检查工具,他的作用是在运行代码之前对React组件以及Jsx语法进行静态代码的检查以 ...
- linux sparse 内核代码静态检查
Sparse简介 Sparse诞生于2004年,是由Linux之父开发的,目的就是提供一个静态检查代码的工具,从而减少Linux内核的隐患.起始,在Sparse之前已经有了一个不错的代码静态检查工具( ...
- React Native工程中TSLint静态检查工具的探索之路
背景 建立的代码规范没人遵守,项目中遍地风格迥异的代码,你会不会抓狂? 通过测试用例的程序还会出现Bug,而原因仅仅是自己犯下的低级错误,你会不会抓狂? 某种代码写法存在问题导致崩溃时,只能全工程检查 ...
- 常见Cppcheck检查问题总结(静态检查错误)
静态检查是比较好的一种自动检查代码工具,可以发现一些隐藏问题,当然更多是让你的代码更加规范,更加在可控范围内. 以下是我整理的错误,也是自己对C++进一步的思考 构造函数显式调用问题 提示: Clas ...
- C/C++代码缺陷静态检查工具cppcheck
cppcheck介绍和安装 CppCheck是一个C/C++代码缺陷静态检查工具.静态代码检查是检查代码是否安全和健壮,是否有隐藏问题. CppCheck只检查编译器检查不出来的bug,不检查语法错误 ...
- cppcheck 自定义规则_cppcheck代码静态检查工具及相关工具插件用法介绍
摘要:介绍代码缺陷静态检查工具(static code analyzer)cppcheck,以及其vs.qtcreator.git.jenkins插件及用法. Cppcheck着重于检测未定义的行为和 ...
- 代码静态检查之findbugs
白盒测试中的静态检查一般是检查编码标准规范,错误列表.编码规范往往团队会根据自己的经验和风格进行设置一些规范.现在很多IDE工具都会在编辑代码的时候实时的提醒是否符合代码风格.错误列表,一般是代码潜在 ...
最新文章
- 吐血推荐:win下如何安装tensorflow?只需两步!!
- 低代码、无代码?深度解读硅谷新趋势
- 技术开发频道一周精选2007-8-24
- 输出商品列表 用户输入序号 显示用户选中的商品
- SAP信贷出口(用户1,2,3)
- Xamarin效果第十七篇之AR GIS
- C++ 输入一行未知个数的整数
- C# 学习 txt -- excel txt -- json
- python和jupyter安装
- ue4蓝图碰撞检测的类型_UE4_自定义相机碰撞组件
- 做图表统计你需要掌握SQL Server 行转列和列转行
- Cortex - M3 一些基础知识
- 【心电信号】基于matlab心电信号去除基线漂移【含Matlab源码 955期】
- vpp自动化测试报错调试
- python能处理数据的优点_Python在数据处理方面的优缺点
- RFC 5627 SIP中文翻译
- ruby所有版本下载地址
- LayaBox---Animation---时间轴动画
- translateY鼠标hover触发动(上下移动) - 代码案例篇
- 百度地图车辆运动轨迹