`
javasee
  • 浏览: 960588 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

西行漫记(15):重构到模式

阅读更多

今天的问题有点意思:我们有停车场(ParkingLot),还有停车小弟(Attendant)。一个停车小弟要管理多个停车场,然后帮客人把车子泊到有空位的停车场去。然后老板说了,要有不同的策略来选择停车场:有时候要选到空位最多的,有时候要选到车子最少的,大老板的车要停到最贵的,熟客的车要停到最便宜的……

熟悉面向对象的程序员第一印象会想到Strategy模式。不过我不是,因为目前不是熟悉面向对象的程序员,熟悉函数要更多一些……(寒一下)。第一印象想起的是,停车小弟知道的多个停车场,其实就是一个list;给定一个条件从list里头挑出一个东西来,其实就是accumulate。所以,第一个想到的做法就是,先实现一个Accumulator,然后用一个binary functor来走accumulate,走完结果就出来了。Strategy是第二个念头冒出来……

问题在于这只是一个感觉,可是光凭感觉编程是不够的。感觉有可能会错,也有可能YAGNI(前面我已经overkill过一次了)。而且就像Jane说的,我们是consultant,是要把知识share给别人的。Strategy模式倒也罢了,若是一步跨上来就是一个accumulate,估计大半人都得晕菜了事——这个不是危言耸听,上次在项目里写了一个map和filter,连Andy都几乎晕菜,事后说是“clevercode”,clever这就不是什么好词。fancy design不是毛病,但得有理由,而且得让客户也明白这个理由,不然客户就得说我们TWer拿着他们的钱在这边玩编码游戏。

所以今天很认真地跟着老师的步伐走……老实说不是很认真,不过大致是差不多的。于是一次一次地闻到了bad smell。先是logic switch,抓住它,把变化的和不变的分开,抽取出来,得到Strategy模式;然后是遍历列表的操作,抓住它,变化的部分抽取出来就是“两个停车场之间的比较”,于是用IComparer来实现比较算法,用ArrayList提供的Sort()方法一排序,取出第一个元素就OK。果然,最初的想法虽说大致不差,还是overkill了:这个需求底下,binary functor可以用IComparer来表达,accumulate也不用自己写的。

重构还没有做完,明天先把上面说的最后部分搞定,然后把Strategy删掉,就得到了符合我第一审美印象并且更加清晰和简单的代码。今天大概是TWU以来学得第二多的一天……学得最多的是业务流程建模和story那天,都语无伦次了。

今天另一个发现是Prefactoring:这是一本好书。仍然以今天的课来说,如果没有老师的引导,那么就要靠第一审美印象来引导了。当然smell也是引导,但big picture同样是很重要的。而且就像refactoring可以训练一样,bigpicture同样是可以训练的。恰好现在大好时机,很久没有时间和心情来看这种“基础”的书,真是享受。

分享到:
评论

相关推荐

    好书推荐之: 重构与模式.Refactoring.to.Patters.part1

    好书推荐之: 重构与模式.Refactoring.to.Patters.part1 好书推荐之: 重构与模式.Refactoring.to.Patters.part1 120M,所有分两部分传了

    从重构到模式(英文版)

    《从重构到模式》是Addison Wesley出版社出版的一本关于软件开发进阶的书籍,英文原版名为"Refactoring To Patterns"。这本书的核心主题是探讨如何通过重构代码来逐步引入设计模式,提升软件的可读性、可维护性和可...

    世界经济论坛-全球灯塔网络2021白皮书:重构运营模式,促进企业发展-2021.4-38页.pdf

    世界经济论坛-全球灯塔网络2021白皮书:重构运营模式,促进企业发展-2021.4-38页.pdf

    [电子书] 重构与模式

    《重构与模式》是软件开发领域的一本经典著作,作者为Addison-Wesley Professional出版社。这本书主要探讨了如何在实际编程过程中有效地进行重构,并将其与设计模式相结合,以提升软件质量和可维护性。 重构是一种...

    大数据产业革命:重构DT时代的企业数据解决方案

    大数据产业革命:重构DT时代的企业数据解决方案 ;

    重构与模式2.pdf

    ### 重构与模式的核心知识点解析 #### 一、重构与模式的关系 《重构与模式》这本书探讨了重构和设计模式之间的内在联系。重构是指在不改变软件外部行为的前提下,对软件内部结构进行调整,以提高代码质量的过程。...

    重构与模式.pdf

    ### 重构与模式的核心知识点解析 #### 一、重构与模式的关系 《重构与模式》这本书开创性地探讨了重构与设计模式之间的内在联系。它强调,在改进现有系统时,通过重构来逐步优化代码结构,进而更好地应用设计模式...

    医疗服务专题报告:重构与回溯(2021)(153页).pdf

    医疗服务专题报告:重构与回溯(2021)(153页).pdf

    重构与模式

    《重构与模式》是一本深度探讨软件开发中重构与设计模式的重要著作。重构是指在不改变软件外部行为的前提下,改善其内部结构,提高代码的可读性和可维护性。模式则是解决常见问题的有效设计策略,为软件开发提供了一...

    20210617-仲量联行-研究报告:重构粤港澳大湾区,产业圈层与空间布局.pdf

    20210617-仲量联行-研究报告:重构粤港澳大湾区,产业圈层与空间布局.pdf

    好书推荐之: 重构与模式.Refactoring.to.Patters.part2

    重构与模式.Refactoring.to.Patters. 120M,所以分两部分上传了,这是第二部分。

    重构与模式.[美]Joshua Kerievsky(带详细书签).pdf

    本书开创性地深入揭示了重构与模式这两种软件开发关键技术之间的联系,说明了通过重构实现模式改善既有的设计,往往优于在新的设计早期使用模式。本书不仅展示了一种应用模式和重构的创新方法,而且有助于读者结合...

    重构到模式

    重构与模式,如何使用重构模式,是坏代码变得可维护。

    重构与模式 Addison Wesley Refactoring To Patterns

    《重构与模式》讨论了如何在重构过程中识别和引入设计模式,如工厂模式、单例模式、观察者模式等,这些模式有助于我们构建更灵活、可扩展的软件架构。 书中的核心观点是,重构和模式并不是孤立的概念,而是相辅相成...

    重构与模式(中文版)

    ### 重构与模式(中文版) #### 知识点概览 本文档主要围绕“重构与模式”这一主题展开,重点介绍了在软件开发过程中如何利用设计模式进行代码重构,以提高代码的质量、可读性和可维护性。文章通过具体实例探讨了...

    代码重构&模式

    例如,当发现大量重复代码时,可以重构为模板方法模式,将共性部分抽象出来;当需要处理多个对象间的交互时,可以考虑使用观察者模式,通过重构将事件处理逻辑分离。 总之,代码重构和设计模式是提高软件质量的两个...

    重构与模式 清晰.pdf

    本书开创性地深入揭示了重构与模式这两种软件开发...通过本书,读者不仅能够更好地学习和理解模式和重构,了解两个领域的新进展和业界最新领悟,还能够学到实战中实现模式的多种方式,学会如何在不同情况下进行选择。

    中国新零售之城竞争力:重构商业重构城市.pdf

    中国新零售之城竞争力:重构商业重构城市.pdf

Global site tag (gtag.js) - Google Analytics