最近一直在读《敏捷软件开发:原则、模式与实践》,做做笔记。
第一篇 软件设计存在的问题
我们知道,系统的设计,是存在于头脑中的衣服至关重要的图像。
即使我们在一开始的设计阶段,就非常清晰的了解了需求,甚至于在发布的时候,依然清楚。但是在接下来,随着不断的使用,弊端、不足会一一的被暴露出来。系统变得越来越难以维护,最后,即使仅仅进行最简单的更改,也需要花费巨大的努力。
笔者提出了一下观点:当软件出现了下面任何一种气味时,就表明软件正在腐化:
1、僵化性:很难对系统进行改动。因为牵扯到其他太多部分的改动。
2、脆弱性:对系统的改动会导致心痛中和改动的地方在概念上无关的许多地方出现问题。(开发人员就像是一只不停追逐自己尾巴的狗)
3、牢固性:很难解开系统的纠结,使之可重用。
4、粘滞性:做正确的事比做错误的事要困难。
两种表现形式:软件的粘滞性和环境的粘滞性
面临一个改动时,开发人员发现,有一些方法会保持设计,但是实施起来困难,另一些方法会破坏设计,但是实施起来相对简单。而我们希望的是,可以更容易地进行哪些保持设计的变动。
5、不必要的复杂性:设计中包含有不具任何直接好处的基础结构。
6、不必要的重复:设计中包含有重复的结构,而该结构本可以使用单一的抽象进行统一。
7、晦涩性:很难阅读、理解。
待续.....
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述