gpt4 book ai didi

java - 从 C++/C# 到 Java——使用 "one public type per class"规则正确构建代码

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:24 25 4
gpt4 key购买 nike

自从大学时代以来,我就没有接触过 Java,所以才开始使用 Java 进行开发。到目前为止我已经能记住很多东西并阅读了一大堆,这个对我来说仍然不清楚......

我遇到的问题是,很多书籍/示例/教程/SE 帖子都专注于更简单、更小的问题,而此类问题不会发生。

如果您的项目具有 1000 种类型(类、接口(interface)或两者)...是为每种类型简单创建新文件的最佳项目结构/布局约定吗?由于我具有 C++/C# 背景,这对我来说不太合适(还?),因为我习惯于通常使用一个或可能很少的文件来定义在项目的其余部分中使用的接口(interface)。小型的相关类通常会在一个文件中实现。

作为一个更具体的示例,我当前正在重构一个“Event”类,该类当前正在处理 15 种不同的事件类型,全部在一个类中。定义该类的包还具有其他事件处理类,例如读取器、写入器和解析器。

如果我创建基本事件类和 15 个派生类,因为每个类都有稍微不同的属性/行为...这些是我的选择:

  1. 15 个新文件全部添加到现有包中 - 似乎我会“污染”该包,因为文件数量将从 6 个增加到 21 个,并且正交性会被破坏。
  2. 将所有事件类移至各自的包中并将它们放在一起
  3. 创建一个名为“Events.java”的文件,并将所有 15 个类作为该主类的嵌套静态类(本质上“类 Events”将成为一个 namespace ) - 看来 Google 使用其 Protocol Buffer 来做到这一点。

由于没有足够的 Java 经验,我无法决定哪种方法是可接受的标准。一个目录中可以有 1000 个文件吗?我应该创建更多包吗? (看看其他库/框架,它们似乎将包的数量保持在最低限度)

在其他情况下,特别是在实现策略模式时,我会创建一个带有静态工厂方法的公共(public)基类和许多非公共(public)类,这样我就可以将它们保存在一个文件中。似乎我只是根据每个类规则的一个公共(public)类型来做出这些“设计”选择,每次我这样做时,这个问题都会回来......也许我只是做得不对。

最佳答案

我将所有十五个事件子类放在它们自己的包中,放在它们自己的文件中。十五个类并不算多。我听说公司应用程序有数千(甚至数万)个类/文件。

我唯一一次在一个文件中看到多个公共(public)类型是当它们是常量或枚举时,例如java.sql.Types。您也可以将它们定义为枚举,然后打开它们,但这样您就会失去多态性。

关于java - 从 C++/C# 到 Java——使用 "one public type per class"规则正确构建代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14026767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com