美文网首页简更Java 杂谈想法
怎样少写一点if...else...

怎样少写一点if...else...

作者: 日更专用小马甲 | 来源:发表于2019-03-15 21:38 被阅读14次

在代码里直接加一个逻辑分支的诱惑力,有时候可能是局外人难以想象的,就像夏天吃小龙虾时候的喝的冰可乐,美味却代价昂贵(一瓶可乐半瓶糖~)。以至于最近在做Code Review的时候,发现有一段代码里差不多有10个逻辑分支。

其实以前团队是有个不成文的“竞赛”的:

比谁在代码里写的if少。

比如业务里有多组定价策略。一开始可能就这么写了。

if (strategy == Prince.StrategyA) {
    …
} else if (strategy == Prince.StrategyB) {
    …
} else {
    …
}

如果再来一种策略就再加个分支。其实把各个策略通过多态封装在各自的实现类里,并把实现类“注册”到分发器(Dispatcher)里可以实现的稍微优雅一点。

public class Dispatcher {
    Map<String, PrinceStrategy> strategies;
    …
    // 分发执行
    PrinceStrategy princeStrategy = strategies.get(strategy)
    priceStrategy.doPrincing()
}

开头提到的10多个逻辑分支的场景,其实是因为任务状态从一开始的3个慢慢的膨胀,而每次的应对方式都是在原来的代码里面增加一小段分支。其实是一种很适合用状态机模式重构的场景。

从表面看,无论方式,代码还是哪些代码,只是拆分到了不同类里。

但是最近突然有点感悟:其实这两种方式更侧重于为了满足“开闭原则”:当需要实现拓展的时候,对于原来的代码基本上不需要进行改动,造成的风险更小,测试回归的成本自然也就更低。

相关文章

  • 怎样少写一点if...else...

    在代码里直接加一个逻辑分支的诱惑力,有时候可能是局外人难以想象的,就像夏天吃小龙虾时候的喝的冰可乐,美味却代价昂贵...

  • Kotlin学习笔记——基础语法篇之控制语句

    if...else... 用法 Kotlin中if...else...基本用法与C/C++,java中相同 例子 ...

  • 我想给你一个有趣的春季

    林清玄在谈到他的写作风格时说,悲伤的事情少写一点,有趣的东西多写一点,美好的事情多写一点,丑恶的东西少写一点。总之...

  • JS 中 if / if...else...替换方式

    说说烂大街的if/if...else...,程序中用得最多的流程判断语句。 对着曾经满屏的if/if...else...

  • 三行情书

    少写一行又怎样, 反正你又不会看。

  • 慧杰《慧杰语录》

    少睡一点,时无忧。 少吃一点,体自瘦。 少干一点,事难成。 少想一点,思不全。 少说一点,意精简。 少写一点,词不...

  • 多收获点

    少睡一点,时无忧。 少吃一点,体自瘦。 少干一点,事难成。 少想一点,思不全。 少说一点,意精简。 少写一点,词不...

  • 慧杰语录

    少睡一点,时无忧。 少吃一点,体自瘦。 少干一点,事难成。 少想一点,思不全。 少说一点,意精简。 少写一点,词不...

  • 《慧杰语录》——每日必读

    少睡一点,时无忧。 少吃一点,体自瘦。 少干一点,事难成。 少想一点,思不全。 少说一点,意精简。 少写一点,词不...

  • 三行情书

    反正你也看不到 少写一行又怎样

网友评论

    本文标题:怎样少写一点if...else...

    本文链接:https://www.haomeiwen.com/subject/gmhdmqtx.html