Function 函数别名是坏的吗?

Function 函数别名是坏的吗?,function,refactoring,alias,Function,Refactoring,Alias,您是否曾经编写过函数Foo,在程序中使用它,然后最终决定重构代码并重写另一个比Foo更好的函数栏,并决定“哦,好吧,从现在开始,我们将使用Bar而不是Foo”。但是,您决定将Foo声明为函数栏的别名,而不是删除Foo并替换代码中出现的每一个Foo 你们中的一些人可能会说:为什么不重写函数Foo并将其名称保留为Foo,这样就不必用Bar替换所有出现的Foo?因为重构,Foo不再是一个合适的名称,因为它不能反映函数的功能,所以我决定不保留它的名称 这是某种追溯性吗 编辑:假设 Foo是你的一个同事写

您是否曾经编写过函数Foo,在程序中使用它,然后最终决定重构代码并重写另一个比Foo更好的函数栏,并决定“哦,好吧,从现在开始,我们将使用Bar而不是Foo”。但是,您决定将Foo声明为函数栏的别名,而不是删除Foo并替换代码中出现的每一个Foo

你们中的一些人可能会说:为什么不重写函数Foo并将其名称保留为Foo,这样就不必用Bar替换所有出现的Foo?因为重构,Foo不再是一个合适的名称,因为它不能反映函数的功能,所以我决定不保留它的名称

这是某种追溯性吗

编辑:假设

  • Foo是你的一个同事写的
  • 说同事们都习惯于吃东西
  • 你是故事中的白痴,你认为自己比其他人更聪明,还写了酒吧
  • 询问你的同事,并解释你为什么要重命名它。除非他们真的相信原来的名字更好,否则他们可能不会在意。如果该方法在面向公众的API中,或者被数百名开发人员使用,那么就不要使用它。否则,只需使用重构工具将其重命名即可


    如果你想让你的代码读起来像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