我正在参加 iTunes U 上提供的在线课程“编程方法论”。该课程介绍了基于 Java 的“机器人卡雷尔”,它向我提出了一个问题。以这段代码为例:
import stanford.karel.*;
public class MidpointFindingKarel extends SuperKarel {
// You fill in this part
public void run(){
fillBeepers();
turnAround();
move();
checkWestEdge();
}
private void fillBeepers(){
move();
while(frontIsClear()){
putBeeper();
move();
}
}
private void checkEastEdge(){
while(beepersPresent()){
move();
}
if(noBeepersPresent()){
turnAround();
move();
if(beepersPresent()){
pickBeeper();
move();
checkWestEdge();
}
else putBeeper();
}
}
private void checkWestEdge(){
while(beepersPresent()){
move();
}
if(noBeepersPresent()){
turnAround();
move();
if(beepersPresent())
{
pickBeeper();
move();
checkEastEdge();
}
else putBeeper();
}
}
}
这段代码的想法是通过在边缘之外放置“蜂鸣器”来找到屏幕的中间,然后获取蜂鸣器的边缘。我所做的是让每个“寻找边缘”函数调用另一个函数来找到另一个边缘。它最终到达一个点,它位于中间,它检查左右两侧的蜂鸣器,发现没有蜂鸣器,然后将一个放在中间。
现在我想问:我经常嵌套函数(或方法?你怎么称呼它们)。作为程序员,这是一个坏习惯吗?在更大、更复杂的项目中,它会反击我吗?它会降低我的代码的可读性吗?如果是这样,任何人都可以提供如何调用这些函数的解决方案吗?