代码之家  ›  专栏  ›  技术社区  ›  Miyagi Coder

我应该重构这段代码吗?

  •  0
  • Miyagi Coder  · 技术社区  · 17 年前

    我正在修改现有站点上的控件。站点中的所有控件都继承形成基类。我需要在母版页上隐藏多个链接,因此我在控件上编写了此方法:

    private void HideCartLink (bool visible)
    {
      Control control1 = Page.Master.FindControl( "link1" );
      control1.Visible = visible;
    
      Control control2 = Page.Master.FindControl( "link2" );
      control2.Visible = visible;
    }
    

    public void HideMasterPageControl (string controlName, bool visible)
    {
        Control control = Page.Master.FindControl( controlName );
        control.Visible = visible;
    }
    

    并在我的控件上添加了此方法:

    void CartLinkVisible(bool visible)
    {
        ////hide cart link
        HideMasterPageControl("link1", visible);
        HideMasterPageControl("link2", visible);
    }
    

    现在我转到第三个控件,意识到我必须做同样的事情。

    我是否应该再次重构代码,以便基类有一个方法专门知道要隐藏哪些链接?还是应该让基类保持泛型,让控件决定隐藏什么?

    我不确定这里的规则是什么。。。

    2 回复  |  直到 16 年前
        1
  •  4
  •   Neil Barnwell    17 年前

    如果我是诚实的,我会更倾向于把这个颠倒过来。我想要一些 补充 根据页面的条件,根据需要选择按钮/链接。这会给你一些更像工具栏的东西,事实上,你可以让它可以配置(或基于用户权限)在每个页面上显示哪些按钮/链接。

    Visitor pattern 虽然这意味着您实现了一个“访问”的类 全部的 指定控件上的链接,并转到配置以查找它们是否应隐藏。这将节省您硬编码链接的控件名称,并允许该方法位于不知道实际控件是什么的基类中。

        2
  •  1
  •   Franci Penov    17 年前

    不过,我不得不同意尼尔的观点,如果你改变逻辑,决定哪些链接需要包含,哪些链接需要排除,似乎会更好。