什么';标记稍后在Java中需要删除的变量的最佳实践是?

什么';标记稍后在Java中需要删除的变量的最佳实践是?,java,Java,我花了两个星期的时间试图计算一个基于变量的东西 事实证明,我早些时候设置变量是为了暂时解决另一个问题,但从来没有回去纠正它 通常,我会尝试使用//ToDo标记代码,以提醒我删除临时变量 在本例中,我没有标记它,因为我只是在尝试修复多个问题。(我不知道发生了什么,所以我尝试了各种各样的东西!) 如何标记要在以后删除的临时变量 您是否在类的顶部将它们实例化为private 用类似//Delete Me Later(稍后删除我)的内容内联标记它们 标记以后需要删除的变量的最佳实践是什么 (当然,除了拥

我花了两个星期的时间试图计算一个基于变量的东西

事实证明,我早些时候设置变量是为了暂时解决另一个问题,但从来没有回去纠正它

通常,我会尝试使用//ToDo标记代码,以提醒我删除临时变量

在本例中,我没有标记它,因为我只是在尝试修复多个问题。(我不知道发生了什么,所以我尝试了各种各样的东西!)

如何标记要在以后删除的临时变量

  • 您是否在类的顶部将它们实例化为private
  • 用类似//Delete Me Later(稍后删除我)的内容内联标记它们
  • 标记以后需要删除的变量的最佳实践是什么


    (当然,除了拥有一个真正有条理的大脑……)

    在谷歌搜索了一下后发现了它,我也很好奇

    @Deprecated
    public void speak() {
       System.out.println("Meow."); 
    }
    
    来自维基百科,网址:

    Java定义了一组内置于 语言。应用于java代码的注释:@Override-Checks 该函数是一个重写。如果 在某个父类中找不到函数@不赞成- 将函数标记为已过时。如果 函数被使用@SuppressWarnings-指示编译器 抑制注释中指定的编译时警告 应用于其他批注的参数批注:@Retention- 指定如何存储标记的批注(无论是否仅以代码形式存储), 编译到类中,或通过反射在运行时可用。 @文档化-标记另一个注释以包含在 文件@目标-标记另一个注释以限制 注释可能应用于@Inherited的java元素的类型- 标记另一个注释,该注释将继承到注释的子类 类(默认情况下,注释不会继承到子类)


    使用注释
    @Deprecated

    @Deprecated
    public void Test() {
      //
    }
    

    最佳实践是使用版本控制。一旦修复了一个bug,就可以使用git/hg/svn diff检查自上次提交以来所做的工作,并删除任何临时更改。如果您需要修复其他bug,但在多次提交时仍保留“临时更改”,那么可以执行部分提交(git add--patch或hg qrecord),这样您的“临时更改”就不会被提交和忘记。对于非常大的临时性(不是最佳实践,但可能会发生),您可以创建一个本地分支,在普通代码的基础上不断重定其基址。一旦确定要删除“临时更改”,您只需清理所有未提交的更改,然后测试问题。

    本地分支(git,搁置IntelliJ中的更改,本地签出源的两个副本),因此当您从一个任务转移到另一个任务时,与只处理部分完成的工作不同,您创建了第二个分支,在第一个分支完成之前不提交/推送它

    结对提交/推送-因此,在与第二个人讨论代码之前,您不会提交,第二个人将指向临时代码块并询问您。希望在提交之前强迫你解决这个该死的问题

    不要使用TODO或其他类似的评论,因为它们将永远不会被执行


    如果它已经是公共的并且正在外部使用,那么@Deprecate它

    首先,我用“TODO\u REMOVE\u”或类似的东西作为每个变量名的开头。这样,如果我忘了删除它,后来有人发现了它,那么很明显应该删除该变量。此外,如果我执行下面的最后一步,我将始终在签入之前删除它

    接下来,我向它添加一个TODO注释,并用Deprecated注释它。我知道其他人说过TODO永远不会被执行,但当我提交时,我的IDE(本例中是IntelliJ)会警告我有X个TODO被提交。如果您在签入时收到类似的消息,这应该会在您的脑海中升起一面旗帜。此外,如果您发现自己经常这样做,请创建一个活动模板、代码段或IDE提供的任何其他内容,这样您只需键入类类型和变量名

    @Deprecated
    Object TODO_REMOVE_variableName;//TODO Remove
    

    最后,在签入更改集之前,我试图重新阅读、理解、改进和确认我编写的每一行代码。这是至关重要的!我知道这一点一开始听起来可能让人望而生畏,尤其是对于大的更改或是当您有一个迫在眉睫的最后期限时,但这只是您编写代码所花费时间的一小部分,它所揭示的问题以及它所节省的未来时间都是非常值得的。诚然,我希望每个开发人员都能做到这一点。

    如果您使用的是Eclipse,我建议您这样做

    有一个新的任务标记,比如“REMOVE”,它可以帮助您轻松确定需要删除哪些临时代码。将优先级设置为高

    打开“任务”视图以检查是否删除任务并采取操作

    请浏览下面的链接(还提供了一个UI屏幕截图)


    我想我会回答你的问题,然后让你投票表决,而不是对每一个想法/建议都发表评论

    首先,非常感谢您分享您的流程和想法。我真的很感激

    我认为有很多因素在起作用,应该由避免犯愚蠢的错误或你已经犯过的错误的愿望驱动。我做了一个(许多)

    让我们假设版本控制和团队评审胜过一切;但是,除了版本控制之外(假设您将crapola交付给了好的代码):

    • @弃用是非常好的。它似乎在瞪着你。我们都需要怒目而视。希望我们能透过树林看到森林

    • 对我来说,差异是很繁重的,因为我经常做出彻底的改变,但这是一个伟大的建议,在许多情况下都有效

    值得注意的是:

    因为我通常是唯一的开发者,所以我依赖TODO。他们是e
    //TODO * Might be a future crash here // where one star is something I really have to clean up before I ship. 
    //TODO *** Can some lines be trimmed from this view adapter?