从质量上,我把软件大致分为以下几种类型:
我们提供的服务有:网站设计、成都做网站、微信公众号开发、网站优化、网站认证、尼元阳ssl等。为数千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的尼元阳网站制作公司
重构应该也是互联网公司开发工作的一部分吧。当一个软件系统需要重构时,必然是因为以下某种原因:比如二次开发难度越来越大、新员工上手越来越困难,每个模块只有特定的人懂;面对日益增长的功能需求,现有架构已经满足不了;模块耦合非常严重,导致不同的开发团队之间互相依赖,严重阻碍了开发进度。
模块之间耦合严重,类间调用关系形成双向依赖。大量的 if/else 分支、运行流程分支太多,圈复杂度爆表,根本理不清。当我们想要增加一个新功能,即使这个功能很小很小,牵扯的链条也非常长,涉及需要改动的周边函数、文件数量巨多。
软件系统从最初的 demo 开始,不断完善,一点点添加新功能,以适应不同的应用场景。比如滴滴这款软件,最初只要把司机端和乘客接进来就行,加上调度系统负责派单,用户规模也比较小;后来,用户规模陡增,需要扩展服务器数量,又牵扯到负载均衡、消息中间件、高并发等需求 ;再后来,添加各种服务类型,比如顺风车、专车、豪华车等等,然后又是各种红包、优惠券等。
微服务的前提条件就是模块间能解耦,这不仅是上云的需求,也能提高研发团队整体的开发效率,更重要的是为了实现服务编排,可以给任意子的服务提供灵活的资源,从而最大化集群的资源利用率,也就是说能更好地做到弹性扩缩容和容错。
传统概念中对代码重构的理解是『不引入任何新功能』。我的看法是,代码重构和新功能开发结合起来,这样更有利于最大化重构效果。
重构也是软件架构设计的一种,这里我称之为『重构设计』。
首先,你要清楚重构的目标是什么。比如侧重满足二次开发,或者侧重模块解耦,或者兼容各种硬件平台、编程语言等等。
其次,你要对基本的软件架构和软件设计风格有清晰的了解,以下是一些必备技能:
23 种设计模式,你不一定要完全了解代码怎么写,但一定要知道每一种设计模式背后的设计思想是什么。有一段时间,我试图在我的代码应用各种设计模式,可最终代码看起来特别冗余而且不是那么必要。从个人经验上来讲,平时业务代码中用设计模式的场合非常少,最常用的无非是工厂、适配器、责任链等,而且效果并没那么大,设计模式真正适合的场合是更高层级的,比如模块间设计等等。
单一职责、开闭原则、里氏替换、迪米特法则、接口隔离、依赖倒置。
有了解过一些,没有亲身实践过。它大体上就是模块解耦和分层的思想:API(对外访问层)、Domain(领域层)、Repository(数据源访问代理层)及基础设施层(DB、Redis、HTTP、RPC 等)
参考马丁.福勒那本经典的《重构:改善代码的设计》,比如过长的函数、过长的参数、数据泥团怎么处理等等。
这里,也说下个人的小建议:比如纵向的调用关系变为横向的,减少函数调用栈深度;不要过度封装。相信用户能找到底层类的实现接口;逻辑上相关的代码物理上尽可能放在一块;对于某个小的具体功能,涉及的链条越短越好;面向接口编程;访问 A 表数据的 class 中不能存在访问 B 表数据的 function;模块对外暴露的接口部分,数据类型的选择上尽量做到宽进严出(接口要考虑通用性);写操作接口,接收参数尽可能少;读操作接口,返回参数尽可能多;减少不必要的类和数据结构等等。
毫无疑问,云是未来数字世界的基础设施。
比如约定/注入插件、事件插件、插槽插件等等。
好了,这里不再列举了,因为根据哈弗大学心理学博士米勒的研究,对于每一类产品,用户最多只能记住七类品牌,这里我也就列七个重构原则~
以面向对象语言为例,这里我把它分为了几个步骤:
总体上有两种方式:
用设计原则和架构理论武装自己,阅读优秀的源码验证理论,深入理解具体业务,方能设计出一套优雅的软件系统。
本文名称:聊一聊:一个大型软件系统该如何重构
本文链接:http://www.mswzjz.cn/qtweb/news25/80575.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能