关闭

testable function

标签: functionobjecteachstringc
195人阅读 评论(0) 收藏 举报
分类:
public function countrySelections(e:Event):Boolean {		
	var countryChanged:Boolean = false;
	var countries:ArrayCollection = e.currentTarget.selectedItems;
	trace("countrySelections:"+countries);
	var tmp:String = '';
  	for each(var i:Object in countries) {
        	    if(i.countryCode == 'All'){
        	    	tmp = 'All';
        	    	break;
        	    } else {
        	    	tmp+=i.countryCode+'|';
        	    }    
        }
        //Alert.show(myStrings.countryList + '___' + tmp);
        if(tmp != 'All'){
        	tmp = tmp.substring(0, tmp.lastIndexOf('|'));
        	if(myStrings.countryList.split('|').length > countries.length){
        		countryChanged = true;
        	} else {
        		for each(var j:Object in countries){
		        	if(myStrings.countryList.indexOf(j.countryCode) < 0 ){
		        		countryChanged = true;
		               }
        	        }
        	}        	
        } else {
        	if(myStrings.countryList != 'All') {countryChanged = true;}
        }        
        myStrings.countryList = tmp;        
        return countryChanged;
}

上面的函数是同事写的,问题很多,其实主要的功能是myStrings.countryList 和e.currentTarget.selectedItems的比较。

1)首先可以把事件去掉

2)引用和改变了全局变量myStrings.countryList

3)两个for,很多的if-else

其实这个问题可以简化为两个排好序数组的比较,可见排序很重要

private function countrySelections2(c1:Array,c2:Array){
	return c1.sort().join("|")!=c2.sort().join("|")
}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:188372次
    • 积分:3089
    • 等级:
    • 排名:第11244名
    • 原创:123篇
    • 转载:36篇
    • 译文:0篇
    • 评论:16条
    文章分类
    最新评论