架构腐化之谜-阅读笔记

简介: # 架构腐化之谜 本文的内容来源于此,但非仅限于此:[http://www.infoq.com/cn/articles/cjz-architecture-corruption](http://www.infoq.com/cn/articles/cjz-architecture-corruption "") ![](http://work.alibaba-inc.com/img3_tbcdn

架构腐化之谜

本文的内容来源于此,但非仅限于此:http://www.infoq.com/cn/articles/cjz-architecture-corruption

失败的经验更容易让人记住,是因为失败让人印象更深刻,5年的编码经历,大部时间都是在循环搞一些让人胃疼的东西。

腐化的特征

每个项目初创之时,都有一个目的:理念先进、架构优美、编码简单、易于维护,但往往随着进度的推进,因为各种原因会变得难于理解、维护、扩展。我曾参与2个遗留产品:关于支付、社交的,在我加入的时候已经只能添加新的功能代码,老的分支逻辑:无论是否有用,都没有人敢动。

  • 难以修改:代码牵涉模块流程太多,导致任何的改动都会造成依赖业务的动荡。如果需要在现有流程的基础上新增业务,最安全的方式是通过if-else方式来兼容老业务添加新功能,而且木有单测,只能靠回归测试来保证功能不出错。这也是我参与支付、社交产品遇到的最常见问题,当时的感觉是自己唯一能做的就是避免新的功能代码把这工程拖向腐烂的深渊,但每次做局部优化也会心惊胆战。
  • 难以模块化:模块化的目的是重用:代码、功能。早期的遗留系统很容易出现package之间的交叉应用、循环应用,后面即使想重构如果没有能力和支持,基本上是不可能的事情-把事情做错比最对容易多了。所以现在这2个系统只是处于线上运行状态,基本上没有添加大的功能模块了。

靠谱的规则

在一个项目开启的时候,靠谱的编码规则:
copy from @爵爷

电影的业务逻辑服务化,整合无线和pc端的业务逻辑。达到几个目标点:

  • √ 业务模型统一
  • √ 业务接口整合
  • √ 异常体系定制
  • √ 接口可测试化
  • √ 系统可监控性
  • √ 提高开发效率

这些规则在任何项目中都适用,个人认为业务模型可以划分为:元数据模型和业务数据模型。元数据模型是现实数据的逻辑映射,例如电影系统中的排期、影院、影片信息,面向db。业务数据模型面向系统页面展示而用,页面的变化、调整会导致业务数据更改,但是组成业务数据的元数据不会更改:

微信:比如朋友圈这个产品经历了很多次变动,出了好几十个版本,但是有东西是不变的,就是数据模型是不变的。所以我们在产品设计和细节还没出来的时候,我们从后台到协议设计到本地存储的整个数据结构设计都已经做好了,界面的框架也可以先做,等设计最终确定的时候,我们技术这边已经进入ready的阶段。(http://www.huxiu.com/article/23367/1.html

我理解所谓的ready阶段是指:交互和原型确定的时候,后台只需要使用基本的数据结构提供相应的业务数据就ok了。

业务接口整合:现在系统都会有app和pc版,每个版本依赖的基础服务接口应该是统一的,这也要求app和pc上的设计的产品模型不能有太大差异。太多的业务分裂也会导致滑向深渊。

异常体系定制、系统可监控性、提高开发效率:不要用if-else-return error 的方式来处理异常分支,统一的异常体系更易于主流程编码、维护。监控是一种非功能性的需求,但是要趁早规划、实现,一个运行在黑盒状态的系统是不能令人放心的。提高效率和编程理念、使用的平台、工具、框架有关系

目录
相关文章
|
3天前
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
Kotlin教程笔记(80) - MVVM架构设计
|
27天前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
63 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
16天前
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
Kotlin教程笔记(80) - MVVM架构设计
23 1
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
374 37
|
24天前
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
本系列学习教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。对于希望快速学习Kotlin语法的读者,建议参考“简洁”系列教程。本文重点介绍了Kotlin实现MVVM架构的设计思路和代码实现,包括Model、ViewModel和View层的具体实现,以及如何通过LiveData和viewModelScope有效管理数据和内存,避免内存泄漏。此外,还讨论了MVVM架构的常见缺点及应对策略,帮助开发者在实际项目中更好地应用这一设计模式。
28 1
|
26天前
|
前端开发 测试技术 数据处理
Kotlin教程笔记 - MVP与MVVM架构设计的对比
Kotlin教程笔记 - MVP与MVVM架构设计的对比
30 2
|
26天前
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
Kotlin教程笔记(80) - MVVM架构设计
28 2
|
24天前
|
存储 前端开发 Java
Kotlin教程笔记 - MVVM架构怎样避免内存泄漏
Kotlin教程笔记 - MVVM架构怎样避免内存泄漏
|
26天前
|
前端开发 JavaScript 测试技术
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
30 0
|
26天前
|
存储 前端开发 Java
Kotlin教程笔记 - MVVM架构怎样避免内存泄漏
Kotlin教程笔记 - MVVM架构怎样避免内存泄漏
46 0
下一篇
无影云桌面