您如何知道何时需要添加单独的课程?

时间:2016-12-12 07:31:26

标签: java class generalization

这是一个非常基本的一般性问题,但它非常简单。我知道您创建了一个用于创建对象的类,但我想知道这是否是您需要创建单独类的唯一原因?我问的原因是因为在我参加的课程中,所有学生都参与了我们都必须单独构建的课程设计。许多学生有5-10个班级,而我只有2个班级。两个选项似乎都很好。

如果这是一个主观问题,那么编写程序的最常用方法是什么。行业领导者对增加可能不完全是100%必要的额外课程的看法是什么?

3 个答案:

答案 0 :(得分:2)

以下是一些指导原则:

单一责任原则

单一责任原则基本上说每个班级应该只做一件事。如果有一个类处理两个或多个事物,请将其拆分为多个类。

所以现在检查你的课程,是否有任何课程可以做很多事情,比如获取用户输入,进行caluclations和打印结果?如果是这种情况,您可能希望将其拆分为多个类。

抽象

OOP中的抽象非常重要。它基本上是将现实世界的东西变成类或接口的过程。例如,如果您正在执行计算应用程序,那么您将拥有执行实际计算的Calculator类。您还可以使用CalculatorWindow类来管理计算器的窗口,例如监听按钮事件。然后,该类可以将用户输入提供给Calculator对象,并让它计算结果。

设计模式

那里有很多设计模式。通过查看这些设计模式,您可以看到类如何交互,并希望您在创建新类时能够获得。

答案 1 :(得分:1)

没有一个通用的答案。

  

如果这是一个主观问题,那么编写程序的最常用方法是什么。

显然,这个问题也是主观的。 (你不指望我们为你做一个调查吗?)

  

行业领导者对增加可能不是100%必要的额外课程的看法是什么?

你的意思是,比尔盖茨,拉里埃里森?

他们可能什么也没说。

当然,有些人会站起来用肥皂盒告诉你,X Y Z是“最佳做法”或其他一些。但大多数时候,这些声明都基于(充其量)轶事证据/个人经验。换句话说,他们真的是装扮成事实的意见。

结论:没有一个正确答案,所以你要学习:

  • 最适合您的(和您的团队)
  • 这并不值得过多担心......如果你在做什么“对你有用”。

(两个不“工作”的极端是当课程如此精细以至于你花费所有时间来编写和阅读样板文件时,或者这些类是如此庞大和复杂以至于你无法理解它们。)

答案 2 :(得分:1)

不同的类用于执行不同的任务。 减少代码重复增加代码重用。这有助于您按照设计模式轻松解决一些关键问题。这是一种很好的做法。

这是一个简单的例子。

排序数据。

//Without using multiple class
public class A{
  public static void main(String[] args){
     int array[] = {1,6,1,8,34,5};
     for(int i=0; i< array.length; i++){
        //your procedure to sort the array
     }
     //other operations;
     //Now you need to sort another new array (new_array[])
     int new_array[] = {1,6,1,8,34,5};
     for(int i=0; i< new_array.length; i++){
        //your procedure to sort the new_array
     }
  }
}

在这个例子中,我们使用两个for循环来排序两个不同的数组。现在看一个包含多个类的示例

public class A{
  public static void main(String[] args){
     int array[] = {1,6,1,8,34,5};

     int my_array[] = Opertaion.sortArray(array);     

     //other operations;
     //Now you need to sort another new array (new_array[])

     int new_array[] = {1,6,1,8,34,5};
     int my_new_array[] = Opertaion.sortArray(new_array); 
  }
}

public class Opertaion{
   public static int[] sortArray(int[] array){
     for(int i=0; i< array.length; i++){
        //your procedure to sort the array
     }
     return array;
   }
}

上面的示例是非常简单的示例,但是当您需要使用多个类来执行大型项目时,将缩短您的编写时间。

  

假设你在一个大项目中

     

您将编写一个用于控制数据库查询的类,一个用于处理该数据库类的其他操作的Service类,一个用于控制所有内容的控制器类等。