1、软件设计与设计原则解读

软件设计与设计原则解读

1. 软件设计的重要性

当被问及代码最重要的属性时,大家可能会想到可读性、可测试性、可维护性、可扩展性、可复用性和可伸缩性等。很多人会认为借助 C++ 的一些特性,如 RAII、算法、Lambda 表达式、模块等就能实现这些目标。

C++ 的确提供了丰富的特性,自 C++11 发布后,每三年就会有新的标准带来更多新特性。因此,C++ 社区非常注重特性和语言机制,多数书籍、讲座和博客都围绕这些展开。然而,特性并非项目成功的关键,项目的成功并不依赖于对所有特性的了解或 C++ 标准的选择。即使使用旧标准、仅使用部分特性,项目也可能取得成功。

相比特性,软件项目的整体结构更为重要。这个结构决定了代码的可维护性,包括修改、扩展和测试代码的难易程度;也决定了项目的可伸缩性,如项目能发展到多大规模、多少人可以协同工作而不相互干扰。项目的架构和设计才是成功的核心,好的软件设计比特性的正确使用更为关键。优秀的软件设计能容忍一些糟糕的实现决策,但糟糕的设计无法靠特性挽救。

2. 依赖问题

软件架构和设计对项目质量至关重要,因为软件是不断变化的,这是软件开发的不变规律。软件被称为“软”件,就是因为它相较于硬件更容易改变,并且人们期望它能轻松适应不断变化的需求。

为了说明这一点,假设从问题跟踪系统中选取一个预计工作量为 2 的问题,看似不是大任务,但实际操作中,修改实体 A 后,可能会意外发现需要同时处理实体 B,而这又可能导致实体 C 和 D 出现问题。原本简单的任务可能演变成大规模、高风险的代码修改。

这种情况的根源通常在于“依赖”。正如 Kent Beck 所说:“依赖是所有规模软件开发中

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值