【问题标题】:Should I put my classes inside or outside the main class? (Best Practices)我应该把我的课放在主课里面还是外面? (最佳实践)
【发布时间】:2021-07-22 00:04:59
【问题描述】:

我刚开始接触 Java,虽然我已经有一些 PHP 中的 OOP 经验

在此示例中,我有一个名为 Person 的简单类,其中包含姓名、年龄和性别等字段。我想知道什么是最好的做法,做这样的事情:

public class Main {
    public static void main(String[] args){
        Person customer = new Person("Jonh Smith", 21, 'M');
        System.out.println(customer.name);
    }

    public static class Person {
        public String name;
        public int age;
        public char sex;

        public Person(String name, int age, char sex){
            this.name = name;
            this.age = age;
            this.sex = java.lang.Character.toUpperCase(sex);
        }
    }
}

这样,Person 类需要是静态的才能工作,这让我怀疑它可能不是最好的方法,这是另一种方法:

public class Main {
    public static void main(String[] args) {
        Person customer = new Person("Jonh Smith", 21, 'M');
        System.out.println(customer.name);
    }
}
    
class Person {
    public String name;
    public int age;
    public char sex;

    public Person(String name, int age, char sex){
        this.name = name;
        this.age = age;
        this.sex = java.lang.Character.toUpperCase(sex);
    }
}

那么,推进这项工作的最佳方式是什么?我仍然需要添加其他类,例如 Company。

【问题讨论】:

  • 您的第二个示例是包含两个类的单个文件 (Main.java) 还是包含两个文件 Main.javaPerson.java?因为通常首选使用单独的文件。
  • @MarkRotteveel 单个Main.java 文件
  • 那么您提出的解决方案都不是“最佳实践”

标签: java


【解决方案1】:

首选方法是在单独的文件中创建顶级类。也就是说,您有一个 Main.javaMain 类,以及一个 Person.javaPerson 类。

在 Java 中允许在单个文件中创建多个顶级类(尽管只有一个类可以是 public,并且如果是公共的,则该类的名称必须与文件名匹配),但通常不鼓励使用它。如果您确实想在一个文件中包含多个类,基本建议是“不要这样做”,如果您真的想要,那么建议是使用嵌套类(如您的第一个示例),但通常只当这些类紧密耦合时(例如需要访问彼此的内部)。

相关:

【讨论】:

  • 那么,我应该始终将不同文件中的类分开吗?即使它们非常简单,例如示例中的 Person ?在这种情况下,我认为我应该将所有内容保存在一个文件中,因为这是一个相对简单的大学作业,我相信这是我的教授打算接收它的方式,作为一个文件
  • @LevyBarbosa 一般来说,是的。出于源代码组织的目的,它被认为是更干净、更不令人惊讶,并有助于您的代码的可发现性。也就是说,如果这是一个简单的任务,并且您不希望它被重用或成长为更大的东西,那么您可以解决您的问题的任何一个解决方案。这甚至可能是这样一种情况,将MainPerson 定义为顶级类可能更可取(而不是在Main 中嵌套Person)。
【解决方案2】:

更多的是一种偏好选择,不过看https://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html

https://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html

当只有内部类本身会使用它时,它鼓励使用内部类。对于 Main,我个人建议将其拆分为单独的文件,而不是将 Customer + 其余类放在同一个类中。

【讨论】:

    【解决方案3】:

    嵌套类并没有任何好处,除了可以放在一个文件中。但是将类放在同一个文件中的想法根本无法扩展,即使再添加一个你可以看到你的一个文件的类也会有点难以处理。

    有一种分离事物的想法,因此没有多个理由来更改一个文件。将您的类放在单独的文件中有助于您实现这一目标。您将在现实世界的项目中看到单独的类。

    【讨论】:

    • 那么,“在现实世界中”,我应该有一个名为 Person.java 的单独文件吗?只有那个类吗?即使它是一个非常简单的?在这种特殊情况下,我必须为大学作业制作这个相对简单的程序,所以最好将所有内容放在一个文件中
    • @Levy:是的,在你工作中的项目中,每个文件主要是一个类。即使是一个很小的项目也可能最终有数百个课程。对于学校项目,绝对将东西放在一个文件中可能更方便。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    相关资源
    最近更新 更多