MST
星途 面试题库

面试题:C# 代码重构中如何运用提取方法重构技巧

假设你有一段 C# 代码,功能是从一个字符串列表中筛选出长度大于5且包含特定子字符串的字符串,并对这些字符串进行特定格式的转换后存储到新的列表中。原始代码逻辑较为混乱,方法体很长,请阐述如何使用提取方法的重构技巧对这段代码进行重构,以及重构的好处是什么。
16.5万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试

重构步骤

  1. 定义筛选方法:提取判断字符串长度大于5且包含特定子字符串的逻辑到一个独立方法,例如:
private bool IsEligibleString(string input, string subString)
{
    return input.Length > 5 && input.Contains(subString);
}
  1. 定义转换方法:将特定格式转换的逻辑提取到一个独立方法,假设转换是将字符串首字母大写,其余字母小写,示例如下:
private string TransformString(string input)
{
    return char.ToUpper(input[0]) + input.Substring(1).ToLower();
}
  1. 重构主逻辑:在主方法中使用上述两个方法进行筛选和转换,并存储到新列表,示例如下:
List<string> originalList = new List<string>();// 初始化原始列表
string subString = "特定子字符串";
List<string> newList = new List<string>();
foreach (string str in originalList)
{
    if (IsEligibleString(str, subString))
    {
        string transformedStr = TransformString(str);
        newList.Add(transformedStr);
    }
}

重构的好处

  1. 提高代码可读性:将复杂逻辑拆分成多个小的、功能明确的方法,使得主方法逻辑更加清晰,易于理解。
  2. 增强代码可维护性:如果筛选条件或转换逻辑需要修改,只需修改对应的独立方法,而无需在冗长的主方法体中查找和修改,降低维护成本。
  3. 提高代码复用性:提取出来的方法可以在其他地方复用,例如在不同的业务逻辑中需要同样的筛选或转换逻辑时,直接调用即可。