在代码中返回一些简单的方法? - 用Java

时间:2014-04-18 08:21:11

标签: java

我需要一些帮助来弄清楚我应该对这个问题做些什么。我创建了一个带有一个名为“procedure”的方法的类,它处理服务器和客户端之间的通信(也向服务器发送一些命令,然后返回一些东西)。

我可以在此处看到此方法的代码:

http://pastebin.com/1ibGNRnr

这种方法“程序”经历了一些步骤。如果我得到一个错误让我们说步骤nr。 4,我应该告诉我的程序再次运行第2步或第3步。 (如果可能,请回到行中)

使用步骤,我的意思是这些行之间的所有内容: 因此,步骤1是验证操作员和询问操作员之间的代码项目编号。

// Verify operator // <--- step 1

// Ask operator for item number <--- step 2

// Search for item name and sends it back. <--- step 3

// Ask operator to confirm name <--- stop 4

and so on:

那么有一种简单的方法吗?如果收到错误,它应该返回几步,但不是从头开始。

现在,我能想到的唯一解决方案是制作每个步骤的方法,如果我收到错误就运行必要的步骤方法。

2 个答案:

答案 0 :(得分:0)

您可以将代码包装在:

boolean finished = false;

while (!finished) {
    try {
        // your repeating code here
    } finally {
        finished = true;
    }
}

但是你可能想要一个“catch”块,它可以分离出也应该导致循环终止的异常。

总的来说,你最好将代码分解为几个方法,每个方法都有一个相当小的功能。这将使您的代码更容易理解和调试。关于构造代码的好书是Andrew Hunt和David Thomas的“实用程序员”。

答案 1 :(得分:0)

我会建议3件事

  • 不要使用循环和条件使代码混乱,而是尽可能使用switch
  • 如果您正在处理异常,则处理异常并使用它
  • 将每项任务移至功能

向您的班级添加属性以管理此状态。

class MyClass {
    public static int CODE;
    MyClass(int i){
        CODE = i;
    }
}

public void executeMe(MyClass o){
    try {
        switch(o.CODE){
            case 1:
                //call task_1()
                break;
            case 2: 
                //call task_2()
                break;
            case 3: 
                //call task_2 and task_3()
                break;
            default:
                //default
        }
    }catch(MyException ee) {
        //change o.CODE value based on exception types and call 
        //executeMe again
        o.CODE = 1;
        executeMe(o);

    }
}

如果您的任务流很简单,您可以删除中断并让它处理。