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

推荐订阅源

Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
J
Java Code Geeks
L
LangChain Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
博客园 - 司徒正美
B
Blog
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog

博客园 - 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();}

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