多少节课太多了?什么时候添加新类比较合适



这是一个一般性的问题,但我会先给你我的具体问题:

我现在正在为我的程序编写一个GUI,这个程序将采用一个框架的形式,上面放置了各种小部件(标签、文本字段等)。它最初将使用javax.swing库,但我在库和GUI本身之间保留了一层抽象,以便更容易地创建一个做同样事情的web应用程序。

我想要一个类来表示GUI的布局:也就是说,它应该包含关于各种标签、按钮等在内容窗格上放置位置的所有信息。目前,我正在考虑的实现方式如下:

class Layout
{
  public MyLabel titleLabel;
  public myTextField sequenceTextField;
  [...]
  public void drawTitleLabel()
  {
    titleLabel = new MyLabel("This is the title.");
    titleLabel.setLocation(wherever);
    titleLabel.draw();
  }
  public void drawSequenceTextField()
  {
    sequenceTextField = new MyTextField();
    [...]
    sequenceTextField.draw();
  }
  [...]
  public void drawGuiFrame()
  {
    drawTitleLabel();
    drawSequenceTextField();
    [...]
  }
}

因此,我将内容窗格上的每个小部件声明为类Layout的字段,然后创建绘制每个小部件的方法drawWidgetName。最后,我创建了一个方法,它调用每个draw...方法,以便绘制整个GUI。

不过,这似乎是错误的。draw...方法感觉它们应该是单个窗口小部件本身的方法,而不是整个GUI的大规模布局的方法。这表明我应该创建单独的类TitleLabelSequenceTextField等,每个类都有一个draw方法,然后在Layout类中有一个调用所有这些draw方法的drawGuiFrame方法(我甚至可以创建一个抽象类,这些新类可以扩展它)。

这样做还有其他一些直接的好处。假设我想合并一个复选框系统以及我的标签和文本区域。然后我可以将其声明为自己的类,并为其提供属性isOptionAisOptionB等,以记录选中了哪个复选框。

但是我有点不愿意以这种方式实现GUI,原因有两个。首先,创建这么多新类会使代码库中有很多小的.java文件。其次,这些将是非常"一次性"的类:我再也不会使用代码了,因为这些类将纯粹为这个特定的GUI设计。

那么,多少课太多了?仅仅因为你觉得它们应该是类,就可以创建很多只会使用一次的新类吗?正如我所说,尽管我欢迎针对这个特定问题的建议,但我也在寻找关于何时适合添加新类的更一般的建议。

对我来说,拥有单独的类似乎是正确的方法。你将类组织在模块子模块中,这样它们就不应该"扰乱代码库"。java中的一个大型应用程序可以很容易地拥有大量的类,这些类可能仅由单个应用程序使用。这几乎就是java作为一种语言和整个java生态系统的工作方式。

在java中,通常认为类布局越细粒度越好。

我自己喜欢为每个新引入的概念创建一个类。通常一个类可以是任意长的,尤其是如果你在其中使用了大量硬编码的数据http://en.wikipedia.org/wiki/God_object.

如果某个类中有太多的逻辑,就会变得很难阅读。如果你觉得一个类变得太大了,看看这个类中是否有逻辑可以拥有自己的类。

最新更新