ActionScript 3的圈复杂度

时间:2013-08-30 15:06:34

标签: actionscript-3 flash complexity-theory cyclomatic-complexity

我正在尝试计算我的软件的圈复杂度,但我有点困惑。据我所知,它是需要测试以涵盖整个软件的路径数量。通常会有if语句和循环导致决策,从而增加路径 但是我的代码下面没有循环或if语句,因此只是1的复杂度?

btn_length.addEventListener (MouseEvent.CLICK, LengthFunc);

function LengthFunc (e: MouseEvent):void
{
    gotoAndStop (1,"Scene 2");
}


btn_speed.addEventListener (MouseEvent.CLICK, SpeedFunc);

function SpeedFunc (e: MouseEvent):void
{
        gotoAndStop (1,"Scene 6");
}


btn_currency.addEventListener (MouseEvent.CLICK, CurrencyFunc);

function CurrencyFunc (e: MouseEvent):void
{
    gotoAndStop (1,"Scene 10");
}

btn_weight.addEventListener (MouseEvent.CLICK, WeightFunc);

function WeightFunc (e: MouseEvent):void
{
    gotoAndStop (1,"Scene 11");
}

btn_data.addEventListener (MouseEvent.CLICK, dataFunc);

function dataFunc (e: MouseEvent):void
{
    gotoAndStop (1,"Scene 16");
}
stop();

这个班级的复杂性也是1我相信。

import fl.data.DataProvider;

var dpcurr:DataProvider = new DataProvider();
var fromVal:Number;
var toVal:Number;
var inputValcurr:Number
var resultValcurr:Number;
input_txt.restrict = "0-9\\.\\";

dpcurr.addItem( { label: "EUR, Euro", data: 1.18 });
dpcurr.addItem( { label: "GBP, British Pound", data: 1 });
dpcurr.addItem( { label: "USD, US Dollar", data:1.54});


fromList.dataProvider = dpcurr; 
toList.dataProvider = dpcurr;

fromList.addEventListener(Event.CHANGE, calculateResultcurr);
toList.addEventListener(Event.CHANGE, calculateResultcurr);
input_txt.addEventListener(Event.CHANGE, calculateResultcurr);

fromList.selectedIndex = 0;
toList.selectedIndex = 2;

fromVal = fromList.selectedItem.data;
toVal = toList.selectedItem.data;

function calculateResultcurr(e:Event):void{
fromVal = fromList.selectedItem.data;
toVal = toList.selectedItem.data;
inputValcurr = Number(input_txt.text);
resultValcurr = inputValcurr * (fromVal / toVal);

convert_btn.addEventListener(MouseEvent.­CLICK, convertcurr);

function convertcurr(evt:MouseEvent):void {
result_txt.text = resultValcurr.toString()}
}

home_btn. addEventListener (MouseEvent. CLICK, homecurr);

function homecurr ( e: MouseEvent ): void {
    gotoAndStop (1, "Scene 1" );
    }
stop();

如果有人能让我知道我是对还是错,我将不胜感激。 这是一个flash项目,因此代码是用ActionScript 3编写的。

2 个答案:

答案 0 :(得分:0)

是的,只要你的代码中没有任何控制声明(如果,其他,同时,for,do,break和&等等),代码中只有一条路径,因此是圈数是一个。

答案 1 :(得分:0)

循环复杂性由决策密度驱动。决策密度越高,复杂性就越高。如果您没有嵌入式决策,则Cyclomatic Complexity将为1.只有代码大小的关联关系,但与决策密度的因果关系。在Tom McCabe的研究中,他表明,一旦Cyclomatic Complexity超过10,模块就容易出错,并且当Cyclomatic Complexity数量线性上升时,错误倾向性呈指数上升。当模块复杂性变得太高时,模块变得不可测试,不可维护且无法记录。将Cyclomatic Complexity分析与Fagan Inspections结合使用是一个非常强大的组合,可以生成高质量的软件,同时降低总体开发成本。 Cyclomatic Complexity评估代码的结构(复杂性图形为您提供了可以描述为代码骨架的图片),Fagan Inspections解决了代码的功能正确性。只需使用一个为您提供Cyclomatic Complexity数字的分析器,其他任何东西都不会像生成复杂性图形那样有用。