java怎样防止重复操作_java – 如何避免代码重复?

一些好的答案(特别是@ Garrett刚才的)给了一个棘手的问题,但我会为后代加上0.02美元.

这里没有简单的答案来解释如何在不看实际代码的情况下重构这个块,但我对它的反应是它需要重新设计.

For example, a way to call break ; from inside the check() function. (Possibly in other programming languages)

如果你要求Java不支持的不同中断(没有hack)并且有重复的check()和各种不同的循环退出/重复代码向我指出这是一个庞大而复杂的方法.以下是您可以考虑的一些想法:

>这里的一些代码块中的每一个都在做某事.如果你把它们用于自己的方法,那么它如何改变循环?

>也许可以将循环分解为一系列评论.不要深入研究代码,但要从概念上考虑它,看看是否有不同的配置.

>您的组织中是否有其他未参与此代码的开发人员看一看?如果你详细解释代码如何运作,他们可能会看到一些你不在杂草中的模式.

我也认为@ aix关于有限状态机的想法很好但我在编程旅程中需要使用这种机制很少次 – 主要是在模式识别期间.我怀疑使用较小的代码块重新设计代码并将其转化为方法将足以改进代码.

如果你想要实现状态机这里有更多细节.你可以有一个只运行一个调用方法的switch语句的循环.每种方法都会返回交换机的下一个值.这与您的代码完全不符,但类似于:

int state = 0;

WHILE: while(true) {

switch (state) {

case 0:

// 1st some code here

state = 1;

break;

case 1:

state = check();

break;

case 2:

return;

case 3:

break WHILE;

case 4:

// 2nd some code

state = 1;

break;

...

}

}

希望其中一些有帮助,祝你好运.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值