代码整洁之道之王道

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 代码整洁之道之王道 丁辉
2. 讲师简介 只有洞察业务本质,才能真正极致整洁 丁辉 中兴无线教练组长 ee.msup.com.cn
3. 代码整洁的背后 • Reasonable • 正确 • 可维护 • Debug • 新增功能 • 静态关系 • 动态状态 ee.msup.com.cn
4. 增加可理解性常用手段 • 精确的命名 • 有序的排版 • 较低的CCN • 清晰分层的逻辑 ee.msup.com.cn
5. 但是。。。 • 这些也很容易成为代码整洁之道的误区和雷区 • 复杂项目中,这些手段对于可理解性增加<=20% ee.msup.com.cn
6. 人能够维护软件的前提 • 人脑需要控制的复杂度>=软件复杂度>=问题复杂度 抽象&映射 软件复杂度 ee.msup.com.cn 简化/逼近 问题复杂度
7. 一个需求:打印出“hello world” • void main() { std::cout << "Hello world" << std::endl; } ee.msup.com.cn
8. • void main() { for (int i = 0; i < strlen(“Hello world!\n") { putchar("Hello world!\n"[i]); } } ee.msup.com.cn
9. • void alien_say(char * p) { while (putchar(*(p += *(p + 1) - *p))); } • void main() { alien_say( "BETHO! Altec oh liryom(a loadjudas!) do } ee.msup.com.cn
10. 控制复杂度的手段:抽象 • 抽象 • 映射 • 还原 ee.msup.com.cn
11. 控制复杂度的手段:抽象 数三角形的个数 抽象要点是裁剪 ee.msup.com.cn
12. 控制复杂度的手段:映射 映射到库、范式、设计模式、数学领域等 ee.msup.com.cn
13. 映射获得模型 • 模型 • 集合的归属关系的一种:子集 ee.msup.com.cn
14. 控制复杂度的手段:还原 • 补充关键细节 ee.msup.com.cn
15. Poker Engine • Show Hand Ø0—High Card Ø1– One Pair Ø2-Two Pair Ø3-Three of a kind Ø4-Straight Ø5-Flush Ø6-Full House Ø7-Four of a kind Ø8-Straight Flush ee.msup.com.cn The Details 一手牌(hand)由5张牌组成,每张牌 都有自己的花色(suit)和分值 (rank); 根据规则,计算出每手牌的分值(hand rank),分值最高的那手牌极为获胜者。
16. 规则为什么会是这样,我们知道它背后的依据吗? ee.msup.com.cn
17. The Reason • Show Hand 0-High Card--50.11% 1-One Pair--42.25% 2-Two Pair--4.75% 3-Three of a kind-2.11% 4-Straight—0.39% 5-Flush-0.196% 6-Full House—0.140% 7-Four of a kind—0.024% 8-Straight Flush--0.0015% ee.msup.com.cn
18. 抽象&映射 ee.msup.com.cn
19. 还原 • 增加顺子的计算 • 增加花色判断 ee.msup.com.cn
20. 显式表达本质复杂度 • 序列转换为集合 ee.msup.com.cn
21. • 能够简化或逼近本质复杂度的设计才是简单设计 • 只有简单设计才是代码整洁的王道 ee.msup.com.cn
22. 什么是简单 • 百度百科 反义词:复杂、困难 近义词:容易 解释 结构单纯;头绪少 草率,不细致 对自然规律的理解和追求 对事物的拿捏恰到好处 基本的,不能减少或缩小的 • 简单的事物难以构造,但易于理解 客观描述,反应问题的本质 容易的事物容易构造,但难以理解 更加主观,表明了事物能否在我的能力范围内解决,一般会导致复杂度快速膨胀 ee.msup.com.cn
23. 简单的定义 • 清晰的抽象: • 聚焦领域,形成抽象层并隐藏细节 表达了本质的概念和概念之间的关系,即那些不变的东西 • 清楚的表达: • 对概念进行有意义的,简洁而不晦涩的展示与沟通 实现层面的问题,建立在清晰抽象的基础上。 很容易看懂,且很容易扩展 ee.msup.com.cn
24. 简单vs容易 • 容易不简单 • 简单不容易 ee.msup.com.cn
25. 总结 • 把握问题本质的设计 物体运动的表现形式很复杂,但是它的本质:牛顿定律 却很简单。事物本质是简单的,之所以复杂,是因为我们 没有把握事物的本 质。 • 循环 简单设计往往是对复杂设计的再加工,经历了 简单-复杂-简单-复杂-简单的循环过程。 追求简单设计的过程是一个逐渐深入的过程, 最终会深入到问题的本质。 • 需要更多的思考投入 ee.msup.com.cn
26. • 只有做到简单 • • • • ee.msup.com.cn 才能把握问题本质复杂度 才能实现上简化、接近问题本质复杂度 才能做到容易理解 才能最终实现代码整洁之道
27. 关注msup公众号 获取更多工程效能实践案例

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-15 08:01
浙ICP备14020137号-1 $Map of visitor$