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

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

问题一:马丁·福勒的「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

相关文章
|
存储 编解码 C语言
ASCII、GBK与UTF-8的联系
ASCII、GBK与UTF-8的联系
254 1
|
Linux 编译器 开发工具
Linux---(五)三大工具yum、vim、gcc/g++
Linux---(五)三大工具yum、vim、gcc/g++
203 1
|
Docker 容器
|
9月前
|
机器学习/深度学习 自然语言处理 算法
PyTorch PINN实战:用深度学习求解微分方程
物理信息神经网络(PINN)是一种将深度学习与物理定律结合的创新方法,特别适用于微分方程求解。传统神经网络依赖大规模标记数据,而PINN通过将微分方程约束嵌入损失函数,显著提高数据效率。它能在流体动力学、量子力学等领域实现高效建模,弥补了传统数值方法在高维复杂问题上的不足。尽管计算成本较高且对超参数敏感,PINN仍展现出强大的泛化能力和鲁棒性,为科学计算提供了新路径。文章详细介绍了PINN的工作原理、技术优势及局限性,并通过Python代码演示了其在微分方程求解中的应用,验证了其与解析解的高度一致性。
2505 5
PyTorch PINN实战:用深度学习求解微分方程
|
算法
几行代码带来的巨大变化
几行代码带来的巨大变化
129 0
|
存储 C语言
C文件有关的基本知识
C文件有关的基本知识
129 1
|
移动开发 JavaScript 小程序
微信小程序:uni-app页面Page和组件Component生命周期执行的先后顺序
微信小程序:uni-app页面Page和组件Component生命周期执行的先后顺序
739 0
|
机器学习/深度学习 存储 算法
【TSP问题】基于蚁群算法求解76城市旅行商问题含Matlab源码
【TSP问题】基于蚁群算法求解76城市旅行商问题含Matlab源码
|
Java 中间件 程序员
最网最全bug定位套路,遇见bug再也不慌了
最网最全bug定位套路,遇见bug再也不慌了
513 0
|
设计模式 JSON 前端开发
重学设计模式——你真的面向对象了吗?
重学设计模式——你真的面向对象了吗?
862 3
重学设计模式——你真的面向对象了吗?