高质量编写非功能性代码的一些实践
本文围绕软件开发中的非功能性质量交付展开讨论,强调了在编码实践中容易被忽视的非功能性需求的重要性。文章指出,非功能性质量(如可维护性、可靠性等)往往因缺乏明确的需求定义和约束机制而难以保证,且其交付水平受个体能力影响较大。为提升非功能性质量,作者以Java语言为例,详细分析了几对相关概念或实践,并提供了具体建议。 写在前面 软件的质量包含功能性、性能、可靠性、可维护性、可移植性等等。工程师产出的代码,首先必须满足功能性(即最基本的业务需求),此外还需要满足其他质量要求。在具体编码实践过程中,功能性的质量交付一般是完整且验证充分的,其他非功能质量的交付结果往往不可控。这是因为: 需求并未显式包含非功能质量要求,或因非功能性质量不会直接影响功能性能质量,在分析、设计、交付和验收过程中未考虑这部分质量交付的投入 系统的架构原则在交付过程中的约束弱,无法充分识别或保证这类非功能质量需求的交付 团队的研发规范和机制未强调或约束对非功能质量的关注和交付 个体自发的非功能质量交付行为,最终质量受个体研发能力的影响很大 功能性质量可以用有或无来直接界定,而非功能质量大部分情况下(除了性能等可量化的质量...