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

我ed了两个星期,试图计算基于变量的值。

事实证明,我较早设置了变量以临时解决另一个问题,但从未回过头来更正它。

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

在这种情况下,我没有标记它,因为我跳过了尝试修复多个问题的步骤。 (我不知道发生了什么,所以我正在尝试各种各样的东西!)

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

您是否在课堂上将它们实例化为私有?

将它们标记为内联,例如//稍后删除我

标记需要稍后删除的变量的最佳实践是什么?

(当然没有一个真正有组织的大脑...)

在C#中,我们为其提供了一个属性:[已过时("使用MethodB代替"")]因此,它的确使我认为Java应该具有类似之处。

根据我的经验,以后修复我通常等同于从不修复,所以无聊的答案是立即修复。

@Johan,有时您仍想将旧方法保留多个版本,例如,使用该库的外部程序在更新时会中断,这会引起客户愤怒。通过将其标记为"过时"或"已弃用",他们有时间对其进行修复,并且仍然可以进行更新以利用其他错误修复的优势。

@迈克尔先生,绝对。假设,什么情况如此严峻,以至于需要引入一个需要去的变量,而不能用例如@Deprecated方法执行?

@ Johan,Touch。

您不应该拥有太多的方法,以至于无法一次(或在页面滚动中)全部看到它们。您遇到的问题只是一个原因(无法立即记住整个方法的症状)。

@OrangeDog不确定那一个。一些人(如我)首先加载课程,使某项工作正常,然后进行清理。

@JackfromBlisd确实如此,然后您因此而浪费了两个星期。

使用注释@Deprecated

@Deprecated

public void Test() {

//

}

经过一番谷歌搜索后发现了它,因为我也很好奇。

@Deprecated

public void speak() {

System.out.println("Meow.");

}

在Wikipedia中,关于Java注释:

Java defines a set of annotations which are built into the

language. Annotations applied to java code: @Override - Checks

that the function is an override. Causes a compile warning if the

function is not found in one of the parent classes. @Deprecated -

Marks the function as obsolete. Causes a compile warning if the

function is used. @SuppressWarnings - Instructs the compiler to

suppress the compile time warnings specified in the annotation

parameters Annotations applied to other annotations: @Retention -

Specifies how the marked annotation is stored—Whether in code only,

compiled into the class, or available at runtime through reflection.

@Documented - Marks another annotation for inclusion in the

documentation. @Target - Marks another annotation to restrict what

kind of java elements the annotation may be applied to @Inherited -

Marks another annotation to be inherited to subclasses of annotated

class (by default annotations are not inherited to subclasses).

最佳实践是使用版本控制。修复错误后,您可以git / hg / svn diff来检查自上次提交以来所做的工作,并删除所有临时更改。如果您需要修复其他错误,但在多个提交中保留"临时更改",则可以执行部分??提交(git add --patch或hg qrecord),这样您的"临时更改"就不会被提交或遗忘。对于非常大的临时人员(不是最佳实践,但是可能会发生),您可以创建一个本地分支,并在此基础上继续使用常规代码。一旦确定要删除"临时更改",就可以清除所有未提交的更改,然后测试问题。

本地分支(git,在IntelliJ中搁置更改,在本地签出源的两个副本),因此当您从一项任务转移到另一项任务时,您不仅要处理半途而废的工作,还需要创建第二个分支并执行在完成之前,不要提交/推送第一个。

配对提交/推送-因此,只有在与第二个人讨论了代码之后,您才可以提交,第二个人将指向临时代码块并向您询问。希望强迫您在提交该问题之前先解决该问题。

不要使用TODO或其他类似的注释,因为它们永远不会被执行。

如果它已经公开并且正在外部使用,则@Deprecate。

如果您使用的是SVN *,并且所做的更改是应在提交更改之前进行修复的(例如,用于在本地调试/测试的临时更改),则可以添加// STOP-COMMIT之类的注释并设置一个-commit挂钩,禁止提交包含此文本的任何文件。

这对于标记不应提交给SVN的配置文件的本地更改也很有效。

如果您的IDE支持一个TODO列表,该列表可以搜索给定字符串的注释,您甚至可以创建自定义的TODO格式来查找该字符串。

*我想您可以使用许多其他版本控制系统执行类似的操作

我没有评论每个想法/建议,而是想回答一下,然后让您对这个答案进行投票。

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

我认为,有许多因素在起作用,这是由避免产生愚蠢错误或遭受已犯错误的愿望所驱动。我做了一个(很多)。

让我们假设版本控制和团队审查胜过一切。但是超出版本控制范围(假设您将crappola提交给了良好的代码):

@Deprecated非常好。好像是在瞪你。我们都需要耀眼。希望我们能透过树林看到森林。

对我来说,差异是很麻烦的,因为我经常进行大范围的更改,但这是一个很好的建议,它在很多情况下都有效。

一些值得注意的事情:

由于我通常是唯一的开发人员,因此我依赖ToDos。它们易于使用。我对待办事项有非正式的评分系统。例如,实际上需要清除的内容如下所示:

//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?

多颗星是任意的,甚至是可选的。我一直在骑自行车。 @ BriGuy37-这是一个有趣的想法。 @Sriram-这也很有趣-在特定条件下设置标签。

就我而言,我没有对// TODO感到厌烦,这让我很生气。

所有这些中最大的规则可能是:

以不会犯此类愚蠢错误的方式来统一您的工作。知道您在进行什么更改以及何时进行。保持冷静。

再次感谢!从社区中吸收最佳实践以融入您的工作真是太好了!

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

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

打开任务视图以检查"删除"任务并采取措施。

请通过下面的链接(也提供了UI截图)

任务标签上的StackOverflow Q / A

首先,我给每个变量名称加上" TODO_REMOVE_"或类似名称。这样,如果我忘记删除它,而以后有人遇到它,则很明显应该删除该变量。另外,如果执行下面的最后一步,则在签入之前始终将其删除。

接下来,我向其中添加一个TODO注释,并使用Deprecated对其进行注释。我知道其他人曾说过TODO从未执行,但是当我进行提交时,我的IDE(在这种情况下为IntelliJ)警告我有X个TODO正在提交。如果您在办理登机手续时收到类似的消息,则应该牢记一个标记。另外,如果您发现自己经常这样做,可以制作一个实时模板,摘要或您的IDE提供的其他任何东西,因此您只需键入类类型和变量名即可。

@Deprecated

Object TODO_REMOVE_variableName;//TODO Remove

最后,我试图重新阅读,理解,改进和确认在检查更改之前编写的每行代码。这是非常重要的!我知道一开始听起来可能令人望而生畏,尤其是对于较大的更改或当您迫在眉睫的最后期限时,但这是您编写代码所花的时间,所揭示的问题以及未来时间的空档。节省是值得的。确实,我希望每个开发人员都这样做。

+1只是用于在签入之前阅读差异。我发现这是代码审查确实有帮助的情况-我通常在发送差异以供审查之前和之后再次检查差异,这使我无法检查临时更改 (或什至只是不必要的更改)太多次了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值