假设我有一个带签名的方法:
public static bool ValidDateToSend(DateTime date, string frequency)
该方法的内部是开启频率。
将频率从字符串更改为公共枚举,是否会被视为重构,还是会走得太远?由于这是一个公共方法,因此在此代码之外可能会有许多引用。重构的严格定义(以及我认为无畏重构意味着什么)是
重组现有代码体系的严谨技术, 改变其内部结构而不改变其外部行为
在我看来,将方法参数更改为使用不兼容类型确实会构成“改变其外部行为”。
答案 0 :(得分:2)
“外部行为”是系统本身在输入和输出方面的行为。修改签名绝对是一种重构,尽管安全地执行它可能很困难。唯一的例外是当您的产品是API时,修改签名会影响客户,而不仅仅是重构。
答案 1 :(得分:0)
将其外部行为更改为我指示代码的用户看到的更改。如果方法本身包含在某种代码库中,则可以考虑更改它的外部行为。如果该方法仅在内部使用并且对方法的所有引用都发生更改,则外部行为不会更改,因此根据您列出的定义,它是重构。如果它在代码库中,则可以将其视为增强。如果你认为代码库的用户必须重构他们的代码来使用它并且他们的代码的最终用户没有看到任何区别,它仍然可以被认为是重构。