软件复用问题之在哪些情况下,复制可能是一个更好的选择

简介: 软件复用问题之在哪些情况下,复制可能是一个更好的选择

问题一:马丁·福勒的「Rule of Three」是什么?


马丁·福勒的「Rule of Three」是什么?


参考回答:

马丁·福勒在《重构》一书中提出的「Rule of Three」是一条代码重构经验法则。它建议我们可以复制和粘贴一次代码,但是当复制相同的代码三次时,应将其提取到新过程中进行抽象以便于复用。这个法则中的最小重复次数3与上述提升组织复用ROI的结论是一致的。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/621687



问题二:为什么说 DRY 原则并不完全等价于复用?


为什么说 DRY 原则并不完全等价于复用?


参考回答:

DRY 原则强调消除重复代码,而复用则侧重于使用已有的代码或组件。尽管两者都旨在减少冗余,但复用可能引入不必要的依赖和复杂性,有时并不符合 DRY 原则的初衷。因此,DRY 原则并不完全等价于复用。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/621688



问题三:在项目中设计了全局的字符串常量类,并让所有其他模块引用这个常量类,这是一个好的实践吗?


在项目中设计了全局的字符串常量类,并让所有其他模块引用这个常量类,这是一个好的实践吗?


参考回答:

这个实践并没有绝对的答案。虽然全局常量类可以提供一种集中的方式来管理常量,但也可能导致不必要的类加载和依赖。在某些情况下,定义模块内的常量类或类中的常量字段可能更为合适。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/621689



问题四:何时应该考虑复制代码而不是尝试复用?


何时应该考虑复制代码而不是尝试复用?


参考回答:

当真实使用的代码占可复用组件整体代码逻辑的比例较低时,或者当复用会引入不必要的依赖和复杂性时,可以考虑复制代码。此外,当语义不一致时,适度的复制也可能是一个更好的选择。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/621690



问题五:在哪些情况下,复制可能是一个更好的选择?


在哪些情况下,复制可能是一个更好的选择?


参考回答:

当复用会引入不必要的包依赖,造成应用包膨胀或者集成时的包冲突问题时,复制可能是一个更好的选择。此外,如果复用的成本较高(如 RCR 较高),而复制的成本较低(如 RL 较低),那么复制也可能是一个更经济的选择。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/621691

相关文章
|
缓存 安全 网络安全
ingress 因为HSTS引发307跳转问题
ingress 因为HSTS引发307跳转问题
|
Docker 容器
|
7月前
|
数据采集 人工智能 Ubuntu
MyEMS开源能源管理系统开发工具
MyEMS 是一款基于 ISO 50001 标准的开源能源管理系统,支持建筑、工厂等场景的电、水、气等能源数据采集与分析,提供光伏、储能、微电网、AI 优化等功能。系统采用开源工具开发,包括 PyCharm、VS Code、Docker、Ubuntu 等,并搭配 MySQL 数据库及 DBeaver 客户端,助力企业实现低碳发展。社区版完全免费,适合开发者学习和部署。下载地址:[https://gitee.com/myems/myems](./https://gitee.com/myems/myems)。
363 32
|
Android开发
Android Studio入门之图像显示解析及实战(附源码 超详细必看)(包括图像视图、图像按钮、同时展示文本与图像)
Android Studio入门之图像显示解析及实战(附源码 超详细必看)(包括图像视图、图像按钮、同时展示文本与图像)
515 1
|
Linux 数据处理 流计算
Linux命令setterm详解
`setterm`是Linux中用于定制终端特性的命令,它改变文本颜色、背景、光标样式等。通过发送控制序列到终端,它调整输出显示。命令有多种选项,如`-foreground`和`-background`设置颜色,`-cursor`开关光标,`-inversescreen`反色。注意兼容性、权限问题,并可使用`-store`保存设置。最佳实践包括了解终端类型、灵活使用选项并备份现有设置。使用`man setterm`获取更多详情。
|
网络协议 编译器 数据处理
C语言:其独特的魅力、广泛的应用领域与深入的代码实践
C语言以其简洁语法和高效性能在编程世界中闪耀,适用于系统编程、嵌入式、游戏开发和网络通信等领域。其独特魅力包括底层访问能力、高效稳定、灵活数据结构和良好可移植性。通过代码示例展示其基本语法和功能,C语言是理解计算机科学和创建高性能程序的关键工具。
|
编解码 移动开发 前端开发
web canvas系列——快速入门上手绘制二维空间点、线、面
web canvas系列——快速入门上手绘制二维空间点、线、面
557 4
|
人工智能 搜索推荐 安全
AI Agent与具象智能的融合:数字化转型的新趋势
【1月更文挑战第14天】AI Agent与具象智能的融合:数字化转型的新趋势
587 4
AI Agent与具象智能的融合:数字化转型的新趋势
DC电源模块的引脚定义可以根据不同的模块而有所不同
DC电源模块的引脚定义可以根据不同的模块而有所不同
|
数据采集 自然语言处理 数据挖掘
ftfy,一个超强的 Python 编码问题修复库!
ftfy,一个超强的 Python 编码问题修复库!
277 0