代码之家  ›  专栏  ›  技术社区  ›  Kendrick

ASP.NET中紧密集成的私有助手类

  •  1
  • Kendrick  · 技术社区  · 16 年前

    我正在写一个有两组可折叠面板的页面(使用nHibernate)我得到一个包含项目列表的category对象,并为每个类别生成一个左面板和右面板。在两个面板中,都有一个列表框。项目预填充到左侧列表框中,用户可以选择项目并将其移动到右侧列表框中(在相应类别下)

    if type=PanelType.Left then 
        set these 5 id strings to access components
    else
        ...
    

    代码变得凌乱,所以我将组件ID的许多逻辑和静态生成器字符串移到了一个私有helper类中,以便使主类的其他部分更易于阅读和遵循。我看到的问题是私有类非常依赖于父类中的特定结构。有一个非常少量的封装正在进行,我可能会使逻辑更难遵循,即使个别组件在代码更容易阅读。

    把这些都打出来之后,我倾向于最后一个选项,但我仍然对整件事感到困惑。。。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Abel    16 年前

    页面是类,作为任何类,它们都可能变得笨拙。当您到达代码严重耦合的阶段时,这在某种程度上取决于这种耦合如何显示您是否应该重构。如果代码清晰、简洁、易于理解,就可以保持原样。但是,如果很难理解,如果你不能在几分钟内向同事解释,或者你认为你自己半年内无法理解,那么它就有资格进行重构。

    Demeter定律(光耦合)不仅适用于类间关系,也适用于方法间关系。这常常被忽视或低估。但有时太多的重构会导致另一个极端:太少的耦合也会变得不可读(就像有太多的小方法或太多的大方法一样)。

        2
  •  1
  •   John Saunders    16 年前

    此外,除非您需要在另一个页面上使用它,否则您不知道如何重构私有类以使其可重用。

    推荐文章