【转】VISUAL STUDIO 2008代码指标为您节省资金
转自:https://www.geekzone.co.nz/vs2008/4773
Visual Studio 2008 Team Developer和Team Suite版本中提供的许多新功能之一是Code Metrics(CM)。
代码度量标准衡量行业标准软件特征。它涵盖了一系列方面,可为开发人员提供有用且可量化的反馈。
显示代码指标非常简单; 只需在解决方案资源管理器中右键单击项目或解决方案,然后选择“计算代码度量标准”。以下是结果:
结果窗口显示五个不同指标中的每一个:循环复杂性,继承深度,类耦合,代码行和整体可维护性指数。通过展开左侧的树,您可以从整个项目向下钻取到类中的各个方法。但是这些数字意味着什么?
Cyclomatic Complexity
Cyclomatic Complexity是在执行方法时可以采用的线性独立路径的总数,基于“if”,“switch”,“while”和其他类似的分支语句的数量。如果一个方法中没有这样的语句,那么只有一个路径可以遵循,因此Cyclomatic Complexity就是一个。
在此示例中,执行此方法时可以遵循三个可实现的路径,具体取决于X的值:
- X为1时遵循的路径
- X为2时遵循的路径
- X不是1或2时遵循的路径
Cyclomatic Complexity告诉你两件重要的事情。首先,它表明了方法的一般复杂性。越低越好; 如果数字很高,该方法可能试图涵盖太多不同的情况(即试图太聪明),需要分解成更简单,专门的方法,专门针对个别情况(并且更容易维护) 。
其次,为了确保每个方案都经过适当的测试,您必须为每个路径创建一个唯一的测试用例。Cyclomatic Complexity会告诉您需要编写的测试用例总数,以确保涵盖所有可能的情况。
如果Cyclomatic Complexity高于一段代码的单元测试数量,您将会知道某些场景没有被考虑,并且可能存在漏洞。
继承
深度继承深度是类层次结构中继承级别的总数,从1开始(记住所有内容都从Object继承)。这个例子的继承深度为3:
越低越好; 如果继承深度高于三或四,您的代码可能过度设计并且难以维护。
数字越大,您需要修改的子类越多 - 花费时间和金钱,并可能引入错误 - 如果您对基类进行了重大更改。
如果您认为您对这些子类所做的每一项更改都可能会引入与他们交互的所有对象的潜在错误......那么,您明白我的观点。
类耦合
类耦合计算类与之交互的不同类型的总数,不包括原始类型和内置类型,如Int32和String。越低越好; 数字越大,一个类的“束缚”越多,对其周围环境的其余部分的依赖性越大。
随着阶级耦合的增加,越来越难以“撕掉”并在另一个项目中使用。简而言之,类的耦合越高,它的可重用性就越低。
从理论上讲,我们都看过应该可重用的类的例子,但在实践中,证明是高度针对项目的,并且每次“移植”到另一个时都必须或多或少地完全重写。项目。
如果这个类在最初创建时设计得更好,我们以后可以节省很多时间。
代码
行代码行(LOC)通过计算代码行中可执行代码行的总数来衡量一个软件的大小。与其他指标一样,较低的通常更好,仅仅是因为您最终需要更少的源代码来解决问题。但请记住,在使用此指标之前,您应该注意一些注意事项:
- 不是每条线都是平等的。有些线条很简单,有些线条非常复杂,需要花费数小时才能搞清楚。
- 它不计算已删除和替换的代码。
- 有时将东西分成多行会使它们更易于理解; 在这种情况下,增加LOC可提高可维护性。
- 除非经过精心设计,经过全面测试和生产就绪的代码,每次坐在键盘上时都会直接从手指流出,因此LOC无法准确反映出已放入软件中的工作量。
明智地使用此指标。在过去,LOC一直被滥用来衡量日常编程生产力,带来灾难性后果。请记住,软件开发不仅仅是键入代码!
可维护性指数
最后,但并非最不重要的是,可维护性指数,从0到100,表示类,成员,命名空间或项目的整体可维护性。它实际上是其他指标的集合,但它还包括一些额外的位,如Halstead Volume,它测量程序的总长度和词汇量。对于变化,这里更高更好。
可维护性指数还提供红色/黄色/绿色交通灯图标,使您可以快速查看问题区域。当数字低于20时,交通信号灯变为黄色,红色低于10时,交通信号灯将变为黄色,此时您应该跑到山上。
总结
Visual Studio 2008的代码度量标准不会衡量性能或安全性,也不会帮助您解决任何错误。但是,在您开发软件时,它将帮助您识别软件中的潜在问题区域。
如果您尽早解决这些问题,您将节省时间和金钱,而这些时间和金钱将在以后重新分解不可维护的代码。知道你第一次就做对了,你也会觉得自己很好!
【转】VISUAL STUDIO 2008代码指标为您节省资金的更多相关文章
- [vs2008]Visual Studio 2008 SP1添加或删除功能提示查找SQLSysClrTypes.msi文件
前言 今天接到领导布置的一个任务,是之前同事负责的项目.离职了,现在客户有些地方需要修改,由于我之前参与过,就落在我的头上了. 然后我就把代码弄了过来,打开发现其中需要用到水晶报表.(我觉得不好用,不 ...
- SQL SERVER 2005快捷键+visual studio 2008 快捷键
一.SQL SERVER 2005快捷键 快捷键 功能 CTRL + SHIF ...
- VISUAL STUDIO 2008 WINDOWS FORM项目发布生成安装包详解(转)
转自:http://www.cnblogs.com/killerofyang/archive/2012/05/31/2529193.html Visual Studio 2008 Windows Fo ...
- Qt5 FOR WINCE7, Visual Studio 2008环境的搭建
Qt5 FOR WINCE7, Visual Studio 2008环境的搭建 Qt5发布时,试过配置Qt5 for wince的环境,原因是暂时不支持WINCE.前几天意外发现官方博客说明已经开始支 ...
- Visual Studio 2008中FormatX源代码格式化插件
原地址:http://www.cr173.com/html/15492_1.html 我总是对组里的兄弟代码规范性近乎完美的要求,举个简单的例子: 1. 每个方法必须有注释,方法参数详细说明 2. ...
- SSMS2008插件开发(2)--Microsoft Visual Studio 2008插件开发介绍
原文:SSMS2008插件开发(2)--Microsoft Visual Studio 2008插件开发介绍 由于开发SSMS2008插件是通过VS2008进行的,有必要先介绍一下VS2008的插件开 ...
- 使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍
使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍 Windows MobileMobileWindowsMicrosoftWinForm 介绍 Microso ...
- Windows 7 Visual Studio 2008配置OpenGL开发环境
Windows 7 Visual Studio 2008配置OpenGL开发环境 glut下载地址: http://www.opengl.org/resources/libraries/glut/gl ...
- Visual Studio 2008常见问题
1.asp.net在什么软件上运行?学习asp往往需要测试asp程序,电脑不能直接测试,需要装IIS才能运行,但装IIS要么需要安装盘,要么需要安装包,而且设置也很复搜索杂.这里给大学推荐两个替代II ...
随机推荐
- php面向对象高级-魔术方法与迭代器
1,魔术方法__set与__get, __call >这些魔术方法,将在相关的属性或者方法不存在时调用 >函数原型 .function __set( $property, $value ) ...
- Three.js开发指南---使用three.js的材质(第四章)
材质就像物体的皮肤,决定了几何体的外表,例如是否像草地/金属,是否透明,是否显示线框等 一 材质 THREE.js的材质分为多种,Three.js提供了一个材质基类THREE.Material, 该基 ...
- springboot No Java compiler available for configuration options compilerClassName: [null] and compil
今天使用eclipse创建springboot整合jsp出现一个问题,在idea中并没有遇到这个问题.最后发现是需要在eclipse中添加一个eclipse依赖,依赖如下: <dependenc ...
- es6 类 和构造函数
- PostGIS安装
PostGIS安装 1.软件下载 postgresql-9.6.1-1-windows-x64-binaries.zip https://www.postgresql.org/download/win ...
- MariaDB MySQL变量取值避免四舍五入的方法
MySQL变量取值避免四舍五入的方法 By:授客 QQ:1033553122 在一些对数据精确度要求比较高的场景(比如资金结算)下,变量取值时不能对变量值进行四舍五入操作,这时候就要做些预处理工作. ...
- Android系统定制和源码开发以及源码编译(附视频)
Android系统定制配套视频: 为了把Android系统源码定制和编译的课程讲完,从准备到录制完所有的视频,一共花去了近半年的时间,前前后后各种下载源码,编译源码,系统不兼容,版本适配,虚拟机配置困 ...
- SQLSERVER中的资源调控器
SQLSERVER中的资源调控器 转载自: http://wenku.baidu.com/view/0d92380cf78a6529647d5375.html http://www.cnblogs.c ...
- SqlServer数据库设计一个字段的值是由其他字段运算结果所得
最近在做项目时,发现数据库的一些字段不能执行sql语句进行修改,仔细观察才发现,它是由其他字段运算结果所得.这样就不需程序员通过代码执行运算结果更新数据库,感觉很实用,而网上教材好像还挺少的,所以把教 ...
- Oracle EBS 用户职责人员取值
SELECT fu.user_name 用户名, fu.description 用户说明, fu.start_date 用户启用日期, fu.end_date 用户终止日期 --,fu.employe ...