Function 函数别名是坏的吗?
您是否曾经编写过函数Foo,在程序中使用它,然后最终决定重构代码并重写另一个比Foo更好的函数栏,并决定“哦,好吧,从现在开始,我们将使用Bar而不是Foo”。但是,您决定将Foo声明为函数栏的别名,而不是删除Foo并替换代码中出现的每一个Foo 你们中的一些人可能会说:为什么不重写函数Foo并将其名称保留为Foo,这样就不必用Bar替换所有出现的Foo?因为重构,Foo不再是一个合适的名称,因为它不能反映函数的功能,所以我决定不保留它的名称 这是某种追溯性吗 编辑:假设Function 函数别名是坏的吗?,function,refactoring,alias,Function,Refactoring,Alias,您是否曾经编写过函数Foo,在程序中使用它,然后最终决定重构代码并重写另一个比Foo更好的函数栏,并决定“哦,好吧,从现在开始,我们将使用Bar而不是Foo”。但是,您决定将Foo声明为函数栏的别名,而不是删除Foo并替换代码中出现的每一个Foo 你们中的一些人可能会说:为什么不重写函数Foo并将其名称保留为Foo,这样就不必用Bar替换所有出现的Foo?因为重构,Foo不再是一个合适的名称,因为它不能反映函数的功能,所以我决定不保留它的名称 这是某种追溯性吗 编辑:假设 Foo是你的一个同事写
如果你想让你的代码读起来像DSL一样,并且想用两种方式来表达同样的意思(比如在Ruby中),你也可以使用别名。这种懒惰的别名是不好的,是的。使用真正的重构工具。这并不是说别名不好。就“兼容性”而言——这取决于消费者是谁以及是否公开,等等。但一般来说,这种兼容性将由代理或其他弃用途径处理,而不是别名。这取决于Foo是否是Bar的误导性名称。您的技术是保持向后兼容性的常用技术。在Java中,您可以将Foo标记为
@Deprecated
,并添加一条注释,说明Bar是一个更好的选择,编译器将用警告标记Foo的出现。哇,我不知道在Java中这么容易。非常好的评论,谢谢。
Foo was written by one of you coworkers
said coworkers are used to Foo
you're the moron in the story who thinks is smarter than the others and wrote Bar