【转】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 ...
随机推荐
- C++ 的那些坑 (Day 2)
虚函数调用的例外 我们知道在通过基类的指针或者引用调用某个对象的函数时,如果这个对象是一个派生类而且该方法是一个虚方法那么一般情况下就会调用派生类的虚方法实现.这个过程是C++的多态.然而这之中有些例 ...
- 为什么你用不好Numpy的random函数?
为什么你用不好Numpy的random函数? 在python数据分析的学习和应用过程中,经常需要用到numpy的随机函数,由于随机函数random的功能比较多,经常会混淆或记不住,下面我们一起来汇总学 ...
- MySql 利用mysql&mysqldum导入导出数据
MySql 利用mysql&mysqldum导入导出数据 by:授客 QQ:1033553122 测试环境 Linux下测试,数据库MySql 工具 mysqldump,该命令位于mysq ...
- 2018-10-18 22:15:32 c language
2018-10-18 22:15:32 c language 在屏幕上输出各种类型的数据 我们使用 puts 来输出字符串.puts 是 output string 的缩写,只能用来输出字符串,不能输 ...
- OkHttp实现文件上传进度
文件上传就一个没刻度的进度条在那里转怎么行,本篇带你实现上传进度,为你的进度条添加刻度吧,啥都不说了,重点重写RequestBody,看代码 import com.squareup.okhttp.*; ...
- Expo大作战(二十五)--expo sdk api之Admob
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- Expo大作战(五)--expo中app.json 文件的配置信息
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- 前端开发使用Photoshop切图详细步骤
切图的主要目的是从设计师提供的psd中获取网页制作所要的资源 一.界面设置 1. 新建文件,调整界面大小,背景设置为透明 2. 自动选择,把组切换为图层 3. 添加窗口内容,一共四项:图层.历史纪录. ...
- 【爬坑】MySQL 无法启动
[说明] 启动 MySQL 的时候出现以下错误 [解决] 在网上查到了遇到相关问题的人的解决方法,参考连接 Mysql启动报错 原因是 MySQL 服务没启动,开启就好了. 最后分析之所以服务没开启, ...
- 【转】学习Linux守护进程详细笔记
[原文]https://www.toutiao.com/i6566814959966093837/ Linux守护进程 一. 守护进程概述 守护进程,也就是通常所说的Daemon进程,是Linux中的 ...