惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
J
Java Code Geeks
G
Google Developers Blog
美团技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Blog of Author Tim Ferriss
月光博客
月光博客
B
Blog
WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
博客园_首页
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
Jina AI
Jina AI
S
SegmentFault 最新的问题
H
Help Net Security
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
Google DeepMind News
Google DeepMind News

博客园 - lovebanyi

Memory stream is not expandable 博客园密文招聘的解密 微软Azure平台 cloud service动态申请证书并绑定证书碰到的坑 PInvoke在 2.0 3.0的时候正常 升级到4.0后出错。 不要进行过度设计,某一层存在真的有意义吗?是否可以更简单。 化繁为简 定义权限 Ajax加载子域跨站cookie丢失的问题. Exists 比Contains 慢非常多。 ValidationExpression="http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?" can not work - lovebanyi 支付系统会碰到的漏洞问题。 值类型引用类型List Remove 方法Remove不掉哪一个项。 Compiler Error Message: CS1513: } expected 如何用好SVN的Branch EntityFramework Any 生成的sql语句超长。 Quartz 的SB问题 GetNextValidTimeAfter 输出和输出 时区 不同步,好傻的方法? 新的一家公司Web开发选择的控件是Dev Express 太烂了,发现项目结构也是混乱的。 使用lambda表达式对属性进行验证。 数据库连接字符串配置的流程改进 从解放劳动力来看未来的科技进程
流程变换与抽象
lovebanyi · 2012-07-10 · via 博客园 - lovebanyi

最近在修改一个比较复杂流程的时发现了代码的流程比较复杂经常象右边哪样写的蛮多的。
然后分析一下发现实际它是没有对流程进行一下抽象。

这样就造成了代码不太好理解了!
流程A和流程B是属于同一个层面的事情。(比如如果一个购物车有打折,哪么打折就是属于同一个层面的事情, 你必须抽象出类这种东西出来处理它,而不能写成 每个抽象下面还有它的流程 , 实际上 模式设计里面也有一个类似的模式 职责链, 这样可以把打折后面的步骤 加到打折哪边去,不会造成很大的复杂度。抽象的方法跟这边不太一样。 类似于工作流, 按活动来抽象。)

我们最好是一块处理。如果象另边这样处理的话 在D后面又出现两个分支流程 E和F。哪么另边方法就会变成一个非常宠大的树。代码复杂度超级高。

而左边的不会这样,它永远就只有一个主线。而清晰的主线 。很容易阅读和修改

图片的文字可能看不太清楚。

流程A和流程B不太一样。但是结束后都是走
流程C和流程D。
也就是流程A和流程C返回的结果是一样的。
左边的是 流程A和流程C 在同一个地方处理,处理好后处理 C 和D
为代码的话用函数来表示


if (A)


{A()}


else


{B()};


C();


D();

右边的是分开之后 流程A流程C和流程D一起处理了


If (A)
{A();C();D();}
Else


{B();C();D();}

同一个层面的事情要去抽象出来!