首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“公共”嵌套类或不嵌套类

“公共”嵌套类或不嵌套类
EN

Stack Overflow用户
提问于 2008-12-03 13:37:18
回答 5查看 6.2K关注 0票数 20

假设我有一个'Application‘类。为了被初始化,它需要在构造函数中进行某些设置。让我们也假设设置的数量是如此之多,以至于必须将它们放在它们自己的类中。

比较此场景的以下两个实现。

实施1:

代码语言:javascript
运行
复制
class Application 
{
   Application(ApplicationSettings settings) 
   {
       //Do initialisation here
   }
}

class ApplicationSettings 
{
   //Settings related methods and properties here
}

实施2:

代码语言:javascript
运行
复制
class Application 
{
   Application(Application.Settings settings) 
   {
       //Do initialisation here
   }

   class Settings 
   {
      //Settings related methods and properties here
   }
}

对我来说,第二种方法更可取。它更具可读性,因为它强烈地强调了两个类之间的关系。当我在任何地方编写代码来实例化Application类时,第二种方法看起来会更漂亮。

现在想象一下,Settings类本身也有一些类似的“相关”类,这个类也是如此。只有三个这样的级别,在“非嵌套”的情况下,类命名就会失控。然而,如果你嵌套,东西仍然是优雅的。

尽管如此,我在StackOverflow上读到有人说,只有当嵌套类对外部世界不可见时,它们才是合理的;也就是说,如果它们只用于包含类的内部实现。通常被引用的反对意见是包含类的源文件的大小膨胀,但分部类是这个问题的完美解决方案。

我的问题是,为什么我们对“公开暴露”的嵌套类的使用保持警惕?还有没有其他的理由反对这样的使用?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/337121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档