x
考虑一个代码,我需要在其中找到数组中最大元素之和的平方。(这不是哪个数据结构的问题,所以请不要发布推荐堆等的回复)。
我最初对其进行编码:
选项1
singleFunction {
// code to sort
// code to sum
// code to sqaure
return;
}
很快,我意识到我可以利用辅助函数并将它们分解为函数。
选项 2
getFinalAnswer() {
// sort;
return sumAndSquare();
}
sumAndSqaure() {
// sum
return square();
}
square() {
// return square.
}
现在我意识到排序、求和和平方可以用作utility methods
而不是简单的helper
方法。
现在我将功能分解为 3 个函数 (1) sort (2) sum x (3) square()
选项3
someFunction(int[] arr, int x) {
sort(arr);
b = sumOfLastXElements(arr, x);
c = sqaure(b);
return c;
}
现在提问:
看起来选项 3 是最好的,但很多时候我们发现一个函数调用另一个函数。选项 2 比选项 3 有什么优势?
根据定义,方法应该执行单个任务/职责。但
somefunction
正在做 3 件不同的事情。这些函数叫什么?