阿里巴巴制定了这 16 条

转载自   阿里巴巴制定了这 16 条

本文内容整理自《阿里巴巴Java开发手册 1.4.0》,获取完整版请在公众号后台回复关键字:手册。

 


1、【强制】存储方案和底层数据结构的设计获得评审一致通过,并沉淀成为文档。

说明:有缺陷的底层数据结构容易导致系统风险上升,可扩展性下降,重构成本也会因历史数据迁移和系统平滑过渡而陡然增加,所以,存储方案和数据结构需要认真地进行设计和评审,生产环境提交执行后,需要进行 double check。

正例:评审内容包括存储介质选型、表结构设计能否满足技术方案、存取性能和存储空间能否满足业务发展、表或字段之间的辩证关系、字段名称、字段类型、索引等;数据结构变更(如在原有表中新增字段)也需要进行评审通过后上线。

2、【强制】在需求分析阶段,如果与系统交互的 User 超过一类并且相关的 User Case 超过 5 个,使用用例图来表达更加清晰的结构化需求。

3、【强制】如果某个业务对象的状态超过 3 个,使用状态图来表达并且明确状态变化的各个触发条件。

说明:状态图的核心是对象状态,首先明确对象有多少种状态,然后明确两两状态之间是否存在直接转换关系,再明确触发状态转换的条件是什么。

正例:淘宝订单状态有已下单、待付款、已付款、待发货、已发货、已收货等。比如已下单与已收货这两种状态之间是不可能有直接转换关系的。

4、【强制】如果系统中某个功能的调用链路上的涉及对象超过 3 个,使用时序图来表达并且明确各调用环节的输入与输出。

说明:时序图反映了一系列对象间的交互与协作关系,清晰立体地反映系统的调用纵深链路。

5、【强制】如果系统中模型类超过 5 个,并且存在复杂的依赖关系,使用类图来表达并且明确类之间的关系。

说明:类图像建筑领域的施工图,如果搭平房,可能不需要,但如果建造蚂蚁 Z 空间大楼,肯定需要详细的施工图。

6、【强制】如果系统中超过 2 个对象之间存在协作关系,并且需要表示复杂的处理流程,使用活动图来表示。

说明:活动图是流程图的扩展,增加了能够体现协作关系的对象泳道,支持表示并发等。

7、【推荐】需求分析与系统设计在考虑主干功能的同时,需要充分评估异常流程与业务边界。

反例:用户在淘宝付款过程中,银行扣款成功,发送给用户扣款成功短信,但是支付宝入款时由于断网演练产生异常,淘宝订单页面依然显示未付款,导致用户投诉。

8、【推荐】类在设计与实现时要符合单一原则。

说明:单一原则最易理解却是最难实现的一条规则,随着系统演进,很多时候,忘记了类设计的初衷。

9、【推荐】谨慎使用继承的方式来进行扩展,优先使用聚合/组合的方式来实现。

说明:不得已使用继承的话,必须符合里氏代换原则,此原则说父类能够出现的地方子类一定能够出现,比如,“把钱交出来”,钱的子类美元、欧元、人民币等都可以出现。

10、【推荐】系统设计时,根据依赖倒置原则,尽量依赖抽象类与接口,有利于扩展与维护。

说明:低层次模块依赖于高层次模块的抽象,方便系统间的解耦。

11、【推荐】系统设计时,注意对扩展开放,对修改闭合。

说明:极端情况下,交付的代码都是不可修改的,同一业务域内的需求变化,通过模块或类的扩展来实现。

12、【推荐】系统设计阶段,共性业务或公共行为抽取出来公共模块、公共配置、公共类、公共方法等,避免出现重复代码或重复配置的情况。

说明:随着代码的重复次数不断增加,维护成本指数级上升。

13、【推荐】避免如下误解:敏捷开发 = 讲故事 + 编码 + 发布。

说明:敏捷开发是快速交付迭代可用的系统,省略多余的设计方案,摒弃传统的审批流程,但核心关键点上的必要设计和文档沉淀是需要的。

反例:某团队为了业务快速发展,敏捷成了产品经理催进度的借口,系统中均是勉强能运行但像面条一样的代码,可维护性和可扩展性极差,一年之后,不得不进行大规模重构,得不偿失。

14、【参考】系统设计主要目的是明确需求、理顺逻辑、后期维护,次要目的用于指导编码。

说明:避免为了设计而设计,系统设计文档有助于后期的系统维护,所以设计结果需要进行分类归档保存。

15、【参考】设计的本质就是识别和表达系统难点,找到系统的变化点,并隔离变化点。

说明:世间众多设计模式目的是相同的,即隔离系统变化点。

16、【参考】系统架构设计的目的:

  • 确定系统边界。确定系统在技术层面上的做与不做。

  • 确定系统内模块之间的关系。确定模块之间的依赖关系及模块的宏观输入与输出。

  • 确定指导后续设计与演化的原则。使后续的子系统或模块设计在规定的框架内继续演化。

  • 确定非功能性需求。非功能性需求是指安全性、可用性、可扩展性等。


本文内容整理自《阿里巴巴Java开发手册 1.4.0》,获取完整版请在公众号后台回复关键字:手册。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Docker 让传统 .NET 应用程序现代化

15 年来,Microsoft .NET Framework 一直都是成功的应用程序平台,在旧版 Framework 和旧版 Windows Server 上运行的业务关键应用程序不计其数。这些传统应用程序仍具有很大的业务价值,但其维护、升级、扩展和管理难度可能很大。同样&#xff…

Mybatis中properties标签的使用

作用域:主配置文件SqlMapConfig.xml中 第一种写法! value值使用${properties中property中name} 第二种写法: 创建文件:jdbcConfig.properties jdbc.drivercom.mysql.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/ee42 jd…

.NET的一点历史故事:作者的一些感想

最近几天通过微博的头条文章平台公开连载了《.NET的一点历史故事》一书的部分草稿。不论是书名还是章节内容,目前真的是仅仅草稿阶段。所以这么早就以连载的方式发布出来,一方面是正在准备在蒙特利尔这边微软技术圈的两场演讲,需要自己尽快恢…

Mybatis中typeAliases标签和package标签

1、typeAliases 主配置文件&#xff1a; <typeAliases><typeAlias type"com.itheima.domain.User" alias"user"></typeAlias></typeAliases>映射配置文件&#xff1a; 2、package 主配置文件<typeAliases><!--<t…

PPT 2010实现使用自定义主题付下载

直接入主题&#xff0c;首先我们打开PPT2010&#xff0c;如下图所示&#xff1a; 点击设计&#xff0c;找到浏览主题&#xff1a; 然后找到我们需要的主题&#xff0c;我已经整理了常用的40套&#xff1a; 最后完美更改

【深圳】.NET 技术分享交流会

随着微软Build 2017的召开&#xff0c;预期将发布.NET Core 2.0 Preview, 邀请深圳地区.NET技术专家和从业人员&#xff0c;一起分享与交流.NET 技术的发展方向,提高.NET技术氛围&#xff0c;发掘.NET高级人才&#xff0c;为改善.NET生态贡献一份力&#xff0c;使.NET技术在深圳…

分布式作业 Elastic Job 如何动态调整

转载自 分布式作业 Elastic Job 如何动态调整 前面分享了两篇分布式作业调度框架 Elastic Job 的介绍及应用实战。 ElasticJob&#xff0d;分布式作业调度神器 分布式作业 Elastic Job 快速上手指南 Elastic Job 提供了简单易用的运维平台&#xff0c;方便用户监控、动态修…

Visual Studio 2017 - Update 2预览版已发布

微软在继续通过Visual Studio Preview项目测试各类新功能&#xff0c;同时会通过公开发布的正式版测试这些新功能在现实世界中的表现情况。通过这种方式&#xff0c;开发者有机会及时了解正在开发的新功能&#xff0c;在开发的早期阶段向微软提供宝贵的反馈&#xff0c;借此为产…

ASP.NET Core开发之HttpContext

ASP.NET Core中的HttpContext开发&#xff0c;在ASP.NET开发中我们总是会经常用到HttpContext。 那么在ASP.NET Core中要如何使用HttpContext呢&#xff0c;下面就来具体学习ASP.NET Core HttpContext。 注入HttpContextAccessor ASP.NET Core中提供了一个IHttpContextAcces…

.NET的一点历史故事:Novell的崩溃和Xamarin的重生

Novell 是一家神奇的技术公司&#xff0c;它自行开发和收购了很多不错的软件和标准&#xff0c;涵盖 NetWare、IPX、WordPerfect、Quattro Pro&#xff0c;Unix&#xff0c;SUSE和Mono。它曾有心挑战微软的霸权&#xff0c;最后不免以失败收场&#xff0c;但在开源运动的发展历…

两步验证杀手锏:Java 接入 Google 身份验证器实战

转载自 两步验证杀手锏&#xff1a;Java 接入 Google 身份验证器实战 什么是两步验证&#xff1f; 大家应该对两步验证都熟悉吧&#xff1f;如苹果有自带的两步验证策略&#xff0c;防止用户账号密码被盗而锁定手机进行敲诈&#xff0c;这种例子屡见不鲜&#xff0c;所以苹…

JS删除之前弹出一个带有确认和取消按钮的提示框confirm()

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><title>添加删除记录…

剑英的区块链学习手记(一)

开篇布拉拉 因为参与了小蚁的c#智能合约编译器的开发&#xff0c;让我第一次近距离接触到区块链技术。 以前我对区块链技术的了解&#xff0c;只知道有一种叫做比特币的玩意儿&#xff0c;以前有同事在几百块一个比特币的时候屯了一批&#xff0c;后来价格炒高了&#xff0c;…

.NET Core 2.0体验

.NET Core 2.0预览版及.NET Standard 2.0 Preview 这个月也就要发布了。具体相关信息可以查看之前的文章.NET Core 2.0及.NET Standard 2.0。 今天来实际体验.NET Core 2.0&#xff0c;正式版发布还需要一段时间。 .NET Core 2.0 本文使用的是 nightly .NET Core 2.0 runtim…

统一的.NET文档体验发布

Microsoft发布了新的.NET API阅读器。该阅读器可以查找所有相关的.NET文档。第一版中包括了.NET Framework、.NET Core、.NET Standard、Xamarin和Azure NuGet软件包的参考文档&#xff0c;并可根据用户反馈添加其它领域的文档。 该阅读器提供了在同一处搜索、展示、发现和浏览…

使用Angular 4、Bootstrap 4、TypeScript和ASP.NET Core开发的Apworks框架案例应用

最近我为我自己的应用开发框架Apworks设计了一套案例应用程序&#xff0c;并以Apache 2.0开源&#xff0c;开源地址是&#xff1a;https://github.com/daxnet/apworks-examples&#xff0c;目的是为了让大家更为方便地学习和使用.NET Core、最新的前端开发框架Angular&#xff…

IntelliJ IDEA 最常用配置详细图解,新手入门必看

转载自 IntelliJ IDEA 最常用配置详细图解&#xff0c;新手入门必看 刚刚使用IntelliJ IDEA 编辑器的时候&#xff0c;会有很多设置&#xff0c;会方便以后的开发&#xff0c;磨刀不误砍柴工。 比如&#xff1a;设置文件字体大小&#xff0c;代码自动完成提示&#xff0c;版…

MyBatis(延迟加载 缓存)

mybatis目录 一对一延迟加载 1.在SqlMapConfig.xml中配置setting标签 2.在IAccoutDao.xml中配置association标签 3.测试类 4.成功运行 一对多延迟加载 2.在IUserDao.xml中配置collection标签 缓存 一级缓存 二级缓存 1.SqlMaoConfig.xml中 2.在需要使用二级缓存的实体类的mapp…

剑英的区块链学习手记(二)

孙子说&#xff0c;知己知彼&#xff0c;百战不殆。 咱是通过小蚁学习区块链技术的。 开工之前&#xff0c;先了解一下小蚁的资料家族。 小蚁网站 https://www.antshares.org/ 小蚁源码 https://github.com/AntShares 小蚁SDK源码 https://github.com/ANTSHARESSdk 比较集…