1 / 24

跟乐高学模块设计

跟乐高学模块设计. 乐 高的无限可能. 如果你有六块八颗凸起的长方体 LEGO 积木,这六块积木可以砌出 102,981,500 多款组合。. 乐高不只是小孩子的玩具. 有趣视频. 乐高有哪些特点?. 简单,那怕是猴子也能学会。 一致,不同时期生产,不同地区生产的乐高还是能够很好的组合在一起 复用,无论你是想做一艘船,一架飞机还是一座城堡,你都可以用相同的零件组合。. 乐高和软件工程的交集. Cluelessness 无 绪 即使对事物内在本质并不清楚,也可以很好的使用它 软件工程中的无绪是指:程序员无绪深入了解很多内容,也可以写出好的代码。.

Télécharger la présentation

跟乐高学模块设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 跟乐高学模块设计

  2. 乐高的无限可能 • 如果你有六块八颗凸起的长方体LEGO积木,这六块积木可以砌出102,981,500多款组合。

  3. 乐高不只是小孩子的玩具 • 有趣视频

  4. 乐高有哪些特点? • 简单,那怕是猴子也能学会。 • 一致,不同时期生产,不同地区生产的乐高还是能够很好的组合在一起 • 复用,无论你是想做一艘船,一架飞机还是一座城堡,你都可以用相同的零件组合。

  5. 乐高和软件工程的交集 • Cluelessness 无绪 • 即使对事物内在本质并不清楚,也可以很好的使用它 • 软件工程中的无绪是指:程序员无绪深入了解很多内容,也可以写出好的代码。

  6. 乐高和jQuery的共性 • 门槛低,使用者无需要了解jQuery的核心工作方式,就能写出很好的代码。 • jQuery的链式结构就像乐高一样可以实现不同模块间的对接。 • 人性化的设计,构造一个对象并不是从最精简,最高效出发,却是从最适用,最容易被理解出发。

  7. 简单易用是如何征服世界 想了解更多框架的性能比较请看:http://dante.dojotoolkit.org/taskspeed

  8. 残酷的现实 • 开发过程是一场与时间的赛跑 • 维护是一个越陷越深的泥潭 • 迭代是一个垃圾场

  9. 简单才好用 • 当你今天接到需求,明天就要上线时,你不想去使用一个你从来没用过的组件,因为往往调试的时间比开发的时间还长。 • 所以在设计组件的时候,不要指望通过文档说明来弥补你的API丑陋。

  10. 简单才好用 • 你要有所准备,因为你不知道为你接手维护代码的是不是一个知道你底细的暴力狂。不要指望交接文档有人看,没人相信这是最新的。 • 所以好的代码,好的组件本身就应该如同文档,清晰的结构、合理的抽象、有价值的注释一个都不能少。

  11. 简单才好用 • 我相信一段代码在刚开始的时候都是清晰可读的,但是迭代会让它变成一个东西放的乱七八糟的抽屉,一旦你失去控制,这段代码将会变成一个恐怖的地下室,无人踏足。 • 所以在设计之初要有预见性,准备好后续的扩展,与其花时间和别人一次又一次的解释,还不如花时间重构一次。

  12. 一致才可靠 • 没有什么比更新核心组件更让人担心了,更新后的组件是否会引发新的问题?是不是满足各个场景的需要? • 所以向前兼容是必须的,内聚、解耦、容错处理,不仅仅提高了代码的安全性,还会让人留下可靠的印象。

  13. 一致才可靠 • 有一个问题往往被忽略,底层技术是否一致,可以想象木头做的lego和塑料做的lego虽然尺寸一致,但是热胀冷缩比不一致其结合必定是不稳的。 • 一致的抽象粒度,一致的API设计,一致的数据格式,一致的返回约定,才能有可靠的结合。

  14. 复用才节省 • 流量是成本,开发量是成本,学习时间是成本。跨页面无法被缓存,重复开发类似功能,过渡期间的临时解决方案都是一种浪费。 • 所以我们需要跨页面的缓存复用,节省流量提高访问速度,需要适应不同场景的组件复用,减少重复开发量减少用户学习成本,需要API层面的复用,每个组件都应该具备一些通用的API,已减少开发者的使用门槛。

  15. 前端的展望 • 模块化JS,按需加载 • BigPipe模式 • 代码规范之上的组件开发约定

  16. 模块化JS加载 • 谁在做? • RequireJs • YUI Loader • LabJs • RunJs • SeeJs • DoJs

  17. 模块化JS加载 • 颗粒更小 • 维护更方便 • 更适合团队开发。

  18. 有损的BigPipe • BigPipe的最大的作用是用户端感知速度更快

  19. 来自新浪的一组数据

  20. 来自淘宝的一组数据

  21. 有损的BigPipe • Facebook的BigPipe由前后端共同完成,模式难以复制。而国内使用BigPipe的主要有两种方式 • 服务器配置 combo • 纯前端BigPipe • 纯前端BigPipe有这样一个问题:连接数增加。带来的问题是服务器CPU占用高,容易出现队列堵塞。

  22. 有损的BigPipe • 基于现状分析,服务器CPU占用约20%,可见瓶颈并非在此,特别是类似商品详情这种非常重的页面,页面打开速度是网站的命脉,我认为这是值得的。

  23. Q & A

  24. 参考文档 • http://hax.github.com/2011/js_api_design/关于JavaScript库和框架的API设计的思考两三例 • http://blog.sina.com.cn/s/blog_482611850100xpb1.html从微博的改版谈网页重构——bigpipe中的页面构建优化 • http://www.qianduan.net/particles-with-in-js-management-load-your-javascript-module.html用In.js颗粒化管理、加载你的Javascript模块 • http://ued.taobao.com/blog/2011/05/13/2011-taobao-lottery-index-dev/ 2011彩票首页开发实践 • http://www.infoq.com/cn/presentations/hjp-infoq-salon哪儿网的JavaScript模块化之路 • http://javascript.blogcn.com/articles/%E4%BB%8E%E4%B9%90%E9%AB%98%E4%B8%8A%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E5%AD%A6%E5%88%B0%E4%BB%80%E4%B9%88%EF%BC%9F.html从乐高上我们可以学到什么?

More Related