【极客日常】可持续性架构设计的秘诀

2024-02-16 01:20

本文主要是介绍【极客日常】可持续性架构设计的秘诀,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天闲聊一下可持续性架构设计的秘诀,总共八个字:概念拆解,重组改造。

说到新开发一个技术工程,很多同学会引用需求拆解的思路,自顶向下拆解子需求,做对应的层次模块设计,然后直接按照拆解结果分模块编码。依照这样的思路,虽然最终架构形态比较符合预期,但不一定能够保障长线迭代。这是因为,技术实现始终是自底向上,而不是自顶向下的,如果说在拆解过程中,思考深度不够,没有触及到底层概念的粒度,那么技术实现的结果,必然是失去可扩展性——上层隐含的底层概念跟需求强绑定,导致底层功能无法拆分出来,不能适配更多场景,最终不断堆积,就产生了技术债。

这个问题需要如何解决?举一个游戏领域的例子。以客户端自动化测试为例,我们期望的一个效果,是要通过客户端自动化测试工具,可以代替人力做游戏场景遍历,解决遍历冒烟测试耗时的问题。为了解决这个问题,可以简单做子问题拆解:

  • 自动化的设备?安卓设备。
  • 自动化的驱动方式?UI+Lua脚本驱动。
  • 要做自动化的业务模块?副本、大世界寻宝和寻路系统。
  • 用例的触发方式?本地PC上人工执行。

因此,我们不难设计一个简单的自动化测试框架,里面包含设备连接、UI/脚本驱动、用例管理以及CMD执行四个模块。框架层实现这些就完事,之后就可以专注编写每个场景的流程逻辑了。游戏测试业界,也基本止步于此。

这样的一个框架,能够支撑的了更多自动化用例的维护么?答案是不能。究其原因,就是框架在设计时,仅仅考虑了需求效果,做了浅层的问题拆解,而没有考虑技术实现的依赖关系,做深层次的基础概念拆解。如果框架只有这些功能,那么写出来的自动化用例代码必然是又臭又长,难以维护。

代码冗长的问题怎么解决?需要抽取共性,做更细粒度的模块化。共性在哪里?有两个点。首先是玩家操作,比如传送到世界的某个坐标,和某个物件交互,进入退出某个UI状态,这些操作是很多自动化用例都共有的,所以可以单独提出来。其次是行为模式,比如打主线任务和支线副本,都遵循一套行为模式——接一个任务,完成一个任务,再判断整个任务流程是否结束。这些行为模式可以抽象成单独的类,实际执行只需要关注特定入参,不需要每次都编码整个流程,这样就能够有效减少用例代码量。

通过抽象玩家操作和行为模式,不仅可以有效提升编码效率,而且也能够降低维护成本。这便是自动化测试框架提升品质的要点。

概念拆解,重组改造,其核心要思考的便是,如何在自顶向下的需求拆解和自底向上的技术实现之间,不断优化这个“最大公约数”。需求是不可控的,技术实现是可控的,就和打麻将一样,我们永远无法确认下一个进张一定是什么牌,但组牌的权利一定永远掌握在我们自己手中。因此,为了让技术实现能够更具备可持续性,我们才需要把所有概念打碎,理顺概念之间的依赖和层次关系,再根据灵活组合不同的概念体系,以达到不同需求预期的效果。除了向着预期的牌型组牌之外,也要兼顾其它牌型的可能性,把牌打活。这样做技术设计,就可以应对频繁的需求变更,不至于积重难返。

这篇关于【极客日常】可持续性架构设计的秘诀的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/713102

相关文章

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

Linux常用工具与命令日常记录(长期更新)

Linux常用工具与命令日常记录(长期更新) 目录 1.本地复制到远程2.Linux压缩拆包与解压3.生成随机密码4.ubuntu默认Python版本设置5.计算当前文件夹中文件数量6.windows中编写shell脚本,在Linux运行出错7.history 历史命令显示时间用户8.Ubuntu18.04设置源、网卡9.Ubuntu18.04设置网卡10.Ubuntu:自定义开

Excel和Word日常使用记录:

Excel使用总结 表格颜色填充: 合并单元格: 选中你要合并的单元格区域。按下快捷键 Alt + H,然后松开这些键。再按下 M,接着按 C。这个组合键执行的操作是:Alt + H:打开“主页”选项卡。M:选择“合并单元格”选项。C:执行“合并并居中”操作。 插入行: 在Excel中,插入一行的快捷键是:Windows:选择整行(可以点击行号)。按下 Ctrl + Sh

[Linux Kernel Block Layer第一篇] block layer架构设计

目录 1. single queue架构 2. multi-queue架构(blk-mq)  3. 问题 随着SSD快速存储设备的发展,内核社区越发发现,存储的性能瓶颈从硬件存储设备转移到了内核block layer,主要因为当时的内核block layer是single hw queue的架构,导致cpu锁竞争问题严重,本文先提纲挈领的介绍内核block layer的架构演进,然

笔记本电脑在跑模型或日常使用中突然白屏的解决办法

文章目录 前言解决方案总结 前言 这段时间我注意到在跑模型或是加载一些大文件的时候,电脑经常会突然白屏,这种问题在日常生活中也时常发生,下面会提供快速有效的解决方法,希望能对大家有所帮助。 解决方案 按快捷键 C t r l + A l t + D e l e t e Ctrl + Alt + Delete Ctrl+Alt+Delete 当电脑突然白屏时,不要慌

系统架构师考试学习笔记第三篇——架构设计高级知识(19)嵌入式系统架构设计理论与实践

本章考点:         第19课时主要学习嵌入式系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分)。在历年考试中,案例题对该部分内容都有固定考查,综合知识选择题目中有固定分值的考查。本课时内容侧重于对知识点的记忆、理解和应用,按照以往的出题规律,嵌入式系统架构设计基础知识点基本来源于教材内。本课时知识架构如图19.1所示。 一、嵌入式系统发展历程

揭秘循环购模式:如何实现消费增值与日常收益

欢迎各位,我是吴军,你们的电商策略顾问。今天,我将向大家介绍一种新颖的商业模式——循环购模式,它如何为商家和消费者创造价值。 你可能会好奇,为何会有“消费1000元,赠送2000元”的优惠?以及如何实现每日领取现金并能提现?这并非商家在无端送钱,而是循环购模式的魅力所在。 让我们来深入探讨。首先,这种模式结合了消费返利和积分返利的概念,但与市场上一些不稳定的返利计划不同,它通过合理的返

系统架构师考试学习笔记第三篇——架构设计高级知识(18)面向服务架构设计理论与实践

本章考点:         第18课时主要学习面向服务架构设计理论与实践。根据考试大纲,本课时知识点会涉及单选题型(约占2~5分)和案例题(25分),本课时内容偏重于方法的掌握和应用,根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,概念知识的考查内容多数来源于实际应用,还需要灵活运用相关知识点。         本课时知识架构如图18.1所示。 一、SOA的相关概念 (

首次揭秘,面向核心业务的全闪分布式存储架构设计与实践

当今是云计算、大数据的时代,企业业务持续增长需要存储系统的 IO 性能也持续增长。 机械盘本身的 IOPS 一直徘徊在数百的级别,为了提高传统存储的性能,有些存储厂商加了缓存层,然而目前应用正由单一走向多元化,导致 IO 特征无法预测,缓存也难以发挥作用。 机械盘依赖盘片的旋转和机械臂的移动进行 IO,目前转速基本达到物理极限,所以机械盘性能一直徘徊不前,无法满足企业核心业务对于存储性能的要求