0

假设我有一个带有签名的方法:

public static bool ValidDateToSend(DateTime date, string frequency)

该方法的内部是开启频率。

将频率从字符串更改为公共枚举,是否会被视为重构,还是太过分了?由于这是一个公共方法,因此在此代码之外可能有许多引用。重构的严格定义(我相信无畏重构的意思)是

用于重构现有代码体的规范技术,在不改变其外部行为的情况下改变其内部结构

在我看来,将方法参数更改为使用不兼容的类型确实会构成“更改其外部行为”。

4

2 回答 2

2

“外部行为”是系统本身在输入和输出方面的行为。修改签名绝对是一种重构,尽管安全地执行它可能很困难。唯一的例外是当您的产品是 API 时,在这种情况下修改签名会影响客户,而不仅仅是重构。

于 2012-05-07T20:32:00.570 回答
0

改变它对我的外部行为表明代码的用户看到的东西发生了变化。如果方法本身包含在某种代码库中,则可以考虑更改其外部行为。如果该方法仅在内部使用并且对该方法的所有引用都发生了变化,那么外部行为不会发生变化,因此根据您列出的定义,它正在重构。如果它在代码库中,它可以被认为是一种增强。如果您认为代码库的用户必须重构他们的代码才能使用它,并且他们的代码的最终用户不会看到任何差异,那么它仍然可能被视为重构。

于 2012-05-07T20:33:09.010 回答