在我正在进行的项目中,我有21个按钮,它们都具有活动和非活动状态。某些按钮的状态受到按下的其他按钮以及按下该按钮的影响。在我的html中,我使用ng-click调用函数updateActiveButtons(num)来激活或停用某些按钮。
我能想到的最好的方法是使用一个包含21个元素的数组,所有这些元素默认设置为false,然后在按下时更改。
问题在于我的代码是UGLY而且我知道必须有一种更好的逻辑方法。
这是我的updateActiveButtons函数:
public static String FizzBuzz(int number)
{
if( (number%3==0) && (number%5==0)) {
return "FizzBuzz";
}
else if( number%3 == 0 ) {
return "Fizz";
} else if( number%5 == 0 ) {
return "Buzz";
} else {
return ""+number;
}
}
/*
* use a for loop to print the appropriate FizzBuzz values (feel free to
* call the provided FizzBuzz function) for values from from to to,
* including both of those values. Each value should be printed in a separate line.
*/
public static void printFizzBuzz(int from, int to, PrintStream out)
{
for (int i = 1; i <= to; ++i){
FizzBuzz(++i);
}
}
我有很多重复的代码以一种感觉不是很好或专业的方式出现。将此信息发送给客户我并不自豪。有没有人对我如何做得更好有任何建议?
答案 0 :(得分:0)
通过方法/函数
替换整个条件(或块)所以
if($scope.activeButtonArray[4] || $scope.activeButtonArray[5]) {
$scope.activeButtonArray[0] = true;
}
变为
if (somethingIsSomething($scope))
这具有更多自我记录的额外好处,因此您可以阅读&#34;你正在做什么。
答案 1 :(得分:0)
我喜欢pixelearth建议只创建另一个功能,所以我做了。
我决定创建一个以数组,起点和终点作为参数的函数,如果该范围内的任何数组值都为真,则返回true。
这是功能:
var arrayContainsTrue = function(arr, start, end) {
for(var i = start; i <= end; i++) {
if(arr[i] == true) {
return true;
}
}
return false;
}
然后缩短我的代码我就这么做了(根据需要使用不同的起点和终点):
if(!arrayContainsTrue($scope.activeButtonArray, 6, 11))