转自: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代码指标为您节省资金的更多相关文章

  1. [vs2008]Visual Studio 2008 SP1添加或删除功能提示查找SQLSysClrTypes.msi文件

    前言 今天接到领导布置的一个任务,是之前同事负责的项目.离职了,现在客户有些地方需要修改,由于我之前参与过,就落在我的头上了. 然后我就把代码弄了过来,打开发现其中需要用到水晶报表.(我觉得不好用,不 ...

  2. SQL SERVER 2005快捷键+visual studio 2008 快捷键

    一.SQL SERVER 2005快捷键  快捷键                                       功能           CTRL       +       SHIF ...

  3. VISUAL STUDIO 2008 WINDOWS FORM项目发布生成安装包详解(转)

    转自:http://www.cnblogs.com/killerofyang/archive/2012/05/31/2529193.html Visual Studio 2008 Windows Fo ...

  4. Qt5 FOR WINCE7, Visual Studio 2008环境的搭建

    Qt5 FOR WINCE7, Visual Studio 2008环境的搭建 Qt5发布时,试过配置Qt5 for wince的环境,原因是暂时不支持WINCE.前几天意外发现官方博客说明已经开始支 ...

  5. Visual Studio 2008中FormatX源代码格式化插件

    原地址:http://www.cr173.com/html/15492_1.html 我总是对组里的兄弟代码规范性近乎完美的要求,举个简单的例子: 1.  每个方法必须有注释,方法参数详细说明 2.  ...

  6. SSMS2008插件开发(2)--Microsoft Visual Studio 2008插件开发介绍

    原文:SSMS2008插件开发(2)--Microsoft Visual Studio 2008插件开发介绍 由于开发SSMS2008插件是通过VS2008进行的,有必要先介绍一下VS2008的插件开 ...

  7. 使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍

    使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍 Windows MobileMobileWindowsMicrosoftWinForm 介绍 Microso ...

  8. Windows 7 Visual Studio 2008配置OpenGL开发环境

    Windows 7 Visual Studio 2008配置OpenGL开发环境 glut下载地址: http://www.opengl.org/resources/libraries/glut/gl ...

  9. Visual Studio 2008常见问题

    1.asp.net在什么软件上运行?学习asp往往需要测试asp程序,电脑不能直接测试,需要装IIS才能运行,但装IIS要么需要安装盘,要么需要安装包,而且设置也很复搜索杂.这里给大学推荐两个替代II ...

随机推荐

  1. 洛谷P3313 [SDOI2014]旅行(树链剖分 动态开节点线段树)

    题意 题目链接 Sol 树链剖分板子 + 动态开节点线段树板子 #include<bits/stdc++.h> #define Pair pair<int, int> #def ...

  2. JSz中的静态方法和实例方法的分析

    我又回来了,最近忙着喝枸杞,没来写博客感觉很有负罪感,今晚我来写一点小小的知识点 可能我们在用形如Array.of()的方法时会产生一些疑问,为什么我们能不实例化直接使用Array上的of()方法呢, ...

  3. 【读书笔记】iOS-网络-错误处理的经验法则

    一,在接口契约中处理错误. 二,错误状态可能不正确. 设备模糊地确认操作是崇拜失败的.比如,移动应用发出HTTP请求以在两个账户间转账.请求被银行系统接收并正确地处理:然而,由于网络失败应答却丢失了, ...

  4. 前端开发笔记(1)html基础

    HTML介绍 HTML是HyperTextMarkupLanguage超文本标记语言的缩写 HTML是标记语意的语言 编辑器 任何纯文本编辑器都能够编辑html,比如记事本,editplus,note ...

  5. ubantu 16.4 Hadoop 完全分布式搭建

    一个虚拟机 1.以  NAT网卡模式   装载虚拟机 2.最好将几个用到的虚拟机修改主机名,静态IP     /etc/network/interface,这里 是 s101 s102  s103 三 ...

  6. RecyclerView--添加头部和底部

    1.先构建WrapRecyclerAdapter /** * Description: 可以添加头部和底部的Adapter */ public class WrapRecyclerAdapter ex ...

  7. View的layout机制

    View框架的工作流程为:测量每个View大小(measure)-->把每个View放置到相应的位置(layout)-->绘制每个View(draw). 源代码分析 在View的源代码中, ...

  8. C语言中数据类型的本质

    数据类型可以理解为固定内存大小的别名.比如int类型,就是表示占用4字节的内存. 1 数据类型的大小 用sizeof操作符获得数据类型的大小. 比如 int a[5];   sizeof(a)就可以得 ...

  9. Android--WebView 自适应代码

    //WebView自适应代码 private String getHtmlData(String bodyHTML) { String head = "<head>" ...

  10. MiUI开发者版刷入xposed框架--简洁方法

    一,首先要确定手机是否解锁 可以去这里查看怎么解锁: http://www.miui.com/unlock/index.html 二,手机系统需要是开发者版,且在安全中心的授权管理打开了ROOT授权 ...