gpt4 book ai didi

c# - 如何将 Tuple<..> 重构为具有描述性名称的类型化类?

转载 作者:行者123 更新时间:2023-11-30 20:26:47 25 4
gpt4 key购买 nike

上下文

我继承了大量使用 Tuple<...> 类型的大型遗留代码库。代码充满了这样的行:

myVar = myTuple.Item4;

我想通过引入具有描述性属性名称的自定义类来重构此代码以提高可读性。

问题

有什么工具可以有效地支持这种重构操作吗?

最佳答案

我认为这个答案不会完全符合您的期望,但既然我去过那里,我想我会分享我的做法。

不幸的是,我没有找到使用某些工具完全自动化此重构的方法。但是,我是这样处理这个问题的……

如果元组用于表示您现在要介绍的单个类,那么您很幸运。我想情况并非如此,因此您将不得不进行一些分类。

但首先要做的是...

寻找元组

我查了所有Tuple的地方用来。

独立的 Visual Studio 和 Resharper 都可以通过使用Find UsagesFind Usages Advanced(如果元组是使用 Tuple.Create() 创建的)来帮助您。 p>

否则或另外,您将需要搜索 new Tuple< 的解决方案或者只是 Tuple .

根据这些信息,确定需要引入的第一个

1。创建 class

...让它看起来像Tuple目前。稍后在重构中处理类时,XML-Doc 可以提供帮助。

class ClassThatWasMissing
{
/// <summary>
/// Represents some Property.
/// </summary>
int Item1 { get; set; }

/// <summary>
/// Represents some other Property.
/// </summary>
string Item2 { get; set; }
}

2。换出Tuple -创建声明和初始化你的ClassThatWasMissing

- Tuple<int, string> myvar = new Tuple<int, string>();
+ ClassThatWasMissing myvar = new ClassThatWasMissing();
myvar.Item1 = 42;
myvar.Item2 = "Some information";

3。重构 ClassThatWasMissing

为属性 ( Item{n} ) 赋予更具描述性的名称。上面的评论此时可以派上用场。

同样,Resharper 和独立的 Visual Studio 都可以提供帮助(例如 R#:重构 → 重命名):

class ClassThatWasMissing
{
/// <summary>
/// Represents some Property.
/// </summary>
int SomeProperty { get; set; }

/// <summary>
/// Represents some other Property.
/// </summary>
string SomeOtherProperty { get; set; }
}

另外请记住,有时在使用点而不是在声明点应用名称可能更容易,因为它们的目的在这些点可能更明显。 VS 和 R# 都能够从那里重命名属性。

ClassThatWasMissing myvar = new ClassThatWasMissing();
myvar.SomeProperty = 42;
myvar.SomeOtherProperty = "Some information";

重复该过程

...对于您最初或连续找到的所有地方。这样做直到没有 Tuple剩下的(或者至少是你可以忍受的)。

祝你好运!

关于c# - 如何将 Tuple<..> 重构为具有描述性名称的类型化类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49506683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com