当前位置: 首页 > 面试题库 >

重构代码(如果不是)

松波
2023-03-14
问题内容

我试图重构代码,并且遇到了这段代码。您能提出建议中的任何重构方法,请说出您使用的折射方法。

private void setUpBag(String language){
    if(language.equals("english")){
        /* add letters with English distribution to bag */
    }
    else if(language.equals("french")){
        /* add letters with French distribution to bag */
    }
    else if(language.equals("russian")){
        /* add letters with Russian distribution to bag */
    }
    else{
        throw new IllegalArgumentException("Unknown language");
    }
}

问题答案:

您实际上违反了SRP(单一职责原则),因此,每当添加新语言时,都需要触摸此代码库。

为了避免列出大量if else statements,您需要一个松散耦合的设计,其中addLetters()行为应在单独的LanguageImpl类(如英语等)中实现,如下面的代码所示,该代码使用状态模式:

步骤(1):定义Language界面

    public interface Language {
      addLetters();
    }

步骤(2):定义Language实现

    public English implements Language {
      //implement addLetters() for English
    }

    //Implement other Language Classes as well in separate classes

步骤(3):修改setUpBagLanguage对象的方法

    public void setUpBag(Language language){
        language.addLetters();
    }

每个Language类都遵循SRP,这是设计OOP应用程序的关键,即每个语言类仅处理特定的行为。

您可以在这里查看更多详细信息。



 类似资料:
  • 主要内容:Eclipse 代码重构Eclipse 代码重构 重命名在整个项目中广泛使用的类可能需要很多时间,但 Eclipse 重构向导通过自动检测对被重命名的类的所有依赖项并对其进行修改,使工作变得更容易。 重构菜单可以通过以下方式打开 : 在 Package Explorer 视图中右键单击 Java 元素并选择 Refactor 菜单项。 在 Java 编辑器中右键单击 Java 元素并选择 Refactor 菜单项。 在包

  • 主要内容:Intellij Idea 重命名,Intellij Idea 复制重构,Intellij Idea 移动重构,Intellij Idea 安全删除,Intellij Idea 查找和替换重复代码重构是改变现有程序结构而不改变其功能和用途的过程。重构还用于提高代码的可重用性、提高性能并删除重复的功能或未使用的功能。重构是一项应该非常小心地执行的任务,因为一个错误可能会产生很多错误。 在重构菜单中,我们可以找到所有可能的重构选项。还有一个可用于重构的快捷方式选项。“Ctrl+Alt+Sh

  • 本文向大家介绍Python重构列表构建代码,包括了Python重构列表构建代码的使用技巧和注意事项,需要的朋友参考一下 示例 假设您具有复杂的代码,该代码通过从空白列表开始并重复添加到列表中来创建并返回列表: 当用列表推导替换内部逻辑不可行时,可以将整个函数转换为就地生成器,然后收集结果: 如果逻辑是递归的,则用于yield from将来自递归调用的所有值包括在“扁平化”结果中:        

  • 5.7.2.再次重构代码 到这里不妨再重构一下代码。不必吝惜重构的机会,它是长线投资,甜头只有在后面才尝的出来。

  • 在Android Studio中开发,解决方案不会总是一蹴而成的。作为一个有效率的编程者,在你的开发,调试和测试中需要一些弹性以及代码重构。随着在这章中的行进,你将明白Android Studio如何产生代码;在这章里你将看到Android Studio如何重构你的代码。重构代码最大的风险是可能引入不期望的错误。通过分析某些风险重构操作的结果,Android Studio减低了这些风险,然后激活F

  • 问题内容: 我有以下JobDSL规格: 我想将常见代码重构为一个函数: 但是从函数内部看不到该函数。什么是正确的方法? 问题答案: 大括号形成Groovy闭合。每个闭包都有一个委托对象,方法调用定向到该委托对象。可以通过委托属性访问委托。您可以将该委托传递给helper函数以访问其方法。