我什么时候应该创建类以避免巨大的主要方法?

时间:2014-03-25 21:22:52

标签: java class javafx-2

只是来自菜鸟的问题:我如何避免巨大的main(对于JavaFX,start)方法?我倾向于创建一流的项目,但我知道这是不正确的。基本上我不知道何时为特定任务创建专用类。

我希望这个问题不是那么愚蠢。

3 个答案:

答案 0 :(得分:3)

这不是一个愚蠢的问题。根据你所说的,你可能不需要其他课程。你可能只需要方法。 让我们看一个简单的例子:

public class MyClass {
    public static void main(String[] args) {
        int i = 4 + 2;
        System.out.println(4 + 2);
    }
}

简单,对吗?但现在,如果变得更难,该怎么办呢。

public class MyClass {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            int k = i + (7 / 2) * 3 / 14;
            System.out.println(i + " " + k);
        }
    }
}

现在显然,这实际上并不困难。但请注意有一种模式?我们将每个数字取为0-9,然后添加(7 / 2) * 3 / 14。这可以转移到方法中:

 int getNumber(int i) {
     return i + (7 / 2) * 3 / 14);
 }

现在,我们的代码看起来更清晰,因为我们不必处理任何添加或除法或乘法

public class MyClass {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            int k = getNumber(i);
            System.out.println(i + " " + k);
        }
    }
}

这个例子可能看起来很愚蠢,因为它涉及一个非常简单的数学问题,但重点是:如果你有重复做的事情,请把它放在一个方法中。

注意: 方法也可用于分割大函数。 当有疑问时,分而治之!
见:

void run() {
    getInput();
    tick();
    render();
}

比这样的东西更清洁:

 void run() {
     Scanner reader = new Scanner(System.in);
     System.out.println("Enter a number: ");
     String string = reader.nextString();
     MyObject obj = new MyObject();
     obj.doSomething(string);
     obj.render();
 }

如果您查看该代码,您就不知道它在做什么!但是你会想到第一个例子,因为它分为明确识别他们所做事情的方法。


无论如何,关于课程:
Google OOP!有很多很棒的资源。对于大多数类,您可以将它们视为容器。您可以创建一个包含Wallet的类Coin并对其进行操作(请考虑spendremoveadd)。

答案 1 :(得分:0)

没有愚蠢的问题:)

您询问有关面向对象编程的概念。

在Java,C ++或Php对象中,目的是将代码存储到逻辑领域。像生活一样想象你的代码。 Immagine一切都像一个对象。

例如,您的程序正在模拟汽车。

在您的代码中,您将拥有一个Car类,然后是一个类Engine,然后是继承Car and Car并且包含Engine实例的类BMW。

在互联网(使用谷歌),你会发现很多关于OOP如何工作的解释。所有这些都将比我更好地解释这一点。

如果您有任何疑问,欢迎您:)

答案 2 :(得分:0)

我认为这是我在学习编程的过程中发展起来的。虽然我的背景更多是使用perl脚本而不是oop

将演示文稿与数据/逻辑分开。

意思是,所有内容都应该在类(或函数)中,并且从主线程中只传递对象(或函数)数据,并以相同的方式获取数据。

如果它执行了一组特定任务,请从中创建一个类。

如果它可以用于其他目的,请用它来制作课程。

如果它执行特定操作,请从中创建一个函数。