Skip to content

Instantly share code, notes, and snippets.

@AutoSponge
Created July 3, 2013 14:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AutoSponge/5918347 to your computer and use it in GitHub Desktop.
Save AutoSponge/5918347 to your computer and use it in GitHub Desktop.
/*
starting code
Maintainability index: 103.291144930526
Physical LOC: 11
Logical LOC: 12
Aggregate cyclomatic complexity: 5
Functions:
*/
for (var i = 1; i <= 100; ++i) {
if (i % 15 === 0) {
console.log('FizzBuzz');
} else if (i % 3 === 0) {
console.log('Fizz');
} else if (i % 5 === 0) {
console.log('Buzz');
} else {
console.log(i);
}
}
/*
refactor for maintainability #1
Maintainability index: 128.21240123234207
Physical LOC: 3
Logical LOC: 3
Aggregate cyclomatic complexity: 5
Functions:
*/
for (var i = 1; i <= 100; ++i) {
console.log(
i % 15 === 0 ? 'FizzBuzz' :
i % 3 === 0 ? 'Fizz' :
i % 5 === 0 ? 'Buzz' :
i
);
}
/*
refactor for maintainability #2
Maintainability index: 151.16128063719958
Physical LOC: 9
Logical LOC: 5
Aggregate cyclomatic complexity: 5
Functions:
translate
Line No.: 1
Physical LOC: 6
Logical LOC: 1
Cyclomatic complexity: 4
Halstead difficulty: 3.5
Halstead volume: 86.03910001730776
Halstead effort: 301.13685006057716
*/
function translate(i) {
return i % 15 === 0 ? 'FizzBuzz' :
i % 3 === 0 ? 'Fizz' :
i % 5 === 0 ? 'Buzz' :
i;
}
for (var i = 1; i <= 100; ++i) {
console.log(translate(i));
}
/*
refactor for maintainability #3
Maintainability index: 155.79165510215708
Physical LOC: 15
Logical LOC: 11
Aggregate cyclomatic complexity: 5
Functions:
toFizzBuzz
Line No.: 1
Physical LOC: 3
Logical LOC: 1
Cyclomatic complexity: 1
Halstead difficulty: 2.5
Halstead volume: 27
Halstead effort: 67.5
toFizz
Line No.: 4
Physical LOC: 3
Logical LOC: 1
Cyclomatic complexity: 1
Halstead difficulty: 2.5
Halstead volume: 27
Halstead effort: 67.5
toBuzz
Line No.: 7
Physical LOC: 3
Logical LOC: 1
Cyclomatic complexity: 1
Halstead difficulty: 2.5
Halstead volume: 27
Halstead effort: 67.5
*/
function toFizzBuzz(i) {
return i % 15 === 0 && "FizzBuzz";
}
function toFizz(i) {
return i % 3 === 0 && "Fizz";
}
function toBuzz(i) {
return i % 5 === 0 && "Buzz";
}
for (var i = 1; i <= 100; ++i) {
console.log(toFizzBuzz(i) || toFizz(i) || toBuzz(i) || i);
}
/*
refactor for maintainability #4
Maintainability index: 160.41393905287168
Physical LOC: 14
Logical LOC: 6
Aggregate cyclomatic complexity: 5
Functions:
isFactor
Line No.: 1
Physical LOC: 5
Logical LOC: 1
Cyclomatic complexity: 1
Halstead difficulty: 1
Halstead volume: 8
Halstead effort: 8
<anonymous>
Line No.: 2
Physical LOC: 3
Logical LOC: 1
Cyclomatic complexity: 1
Halstead difficulty: 2
Halstead volume: 18.094737505048094
Halstead effort: 36.18947501009619
*/
function isFactor(n) {
return function (i) {
return i % n === 0;
};
}
for (var i = 1; i <= 100; ++i) {
console.log(
isFactor(15)(i) && "FizzBuzz" ||
isFactor(3)(i) && "Fizz" ||
isFactor(5)(i) && "Buzz" ||
i
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment