软件系统设计的优化与简洁之道
1. 代码清洁与架构分离
在软件开发中,代码的清洁度至关重要。相较于原始的 EJB2 代码,某些代码通过注解包含实体细节,且这些信息仅存在于注解内,使得代码干净、清晰,便于测试驱动和维护。若有需要,注解中的部分或全部持久化信息可移至 XML 部署描述符,从而得到真正纯粹的 POJO。若持久化映射细节不常变动,许多团队会选择保留注解,其弊端相较于 EJB2 的侵入性已大幅降低。
在分离关注点方面,AspectJ 语言是功能最全面的工具,它是 Java 的扩展,为方面提供“一等公民”支持。Spring AOP 和 JBoss AOP 提供的纯 Java 方法能满足 80 - 90% 方面应用场景,但 AspectJ 提供了更丰富强大的工具集。不过,采用 AspectJ 需要学习新工具、语言结构和使用习惯。不过,最近引入的 AspectJ“注解形式”一定程度上缓解了采用问题,Spring 框架也让缺乏 AspectJ 经验的团队更易集成基于注解的方面。
2. 测试驱动系统架构
通过类似方面的方法分离关注点意义重大。若能用 POJO 编写应用程序的领域逻辑,在代码层面与架构问题解耦,就能真正对架构进行测试驱动。可以根据需求,从简单架构逐步发展到复杂架构,无需进行大前期设计(BDUF)。BDUF 有害,因为它抑制了对变化的适应,而软件在有效分离关注点的结构下,经济上可行进行重大改变。
我们可以从“天真简单”但解耦良好的架构开始软件项目,快速交付可用的用户故事,再根据规模扩展添加更多基础设施。一些大型网站通过复杂的数据缓存、安全和虚拟化等技术,凭借低耦合设计实现了高可用性和性能。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



