贝尔曲线方法重构(Bell Curve Method Refactoring),是一种通过将代码可读性,可扩展性和可维护性调整到最佳状态的方法。它基于三个主要步骤:规模化、分组化和提取化。
你可以在下面的示例中看到如何使用此方法:
原始代码:
function bigFunction(array1, array2, array3) {
var newArray = [],
i, j, k;
for (i = 0; i < array1.length; i++) {
for (j = 0; j < array2.length; j++) {
for (k = 0; k < array3.length; k++) {
if (array1[i] === array2[j] && array2[j] === array3[k]) {
newArray.push(array1[i]);
}
}
}
}
return newArray;
}
规模化:
在此步骤中,我们尝试将大而杂乱的函数分解成一组小而简单的函数。
function bigFunction(array1, array2, array3) {
return getCommonElements([
getElementCombinations(array1),
getElementCombinations(array2),
getElementCombinations(array3)
]);
}
function getElementCombinations(array) {
var combinations = [];
var i, j;
for (i = 0; i < array.length; i++) {
for (j = i + 1; j < array.length; j++) {
if (array[i] === array[j]) {
combinations.push(array[i]);
}
}
}
return combinations;
}
function getCommonElements(arrayOfArrays) {
return arrayOfArrays.reduce(function (array1, array2) {
return array1.filter(function (element) {
return array2.indexOf(element) !== -1;
});
});
}
分组化:
在此步骤中,我们将代码分组,使得同一类操作的代码在一起。
function bigFunction(array1, array2, array3) {
return getCommon