为何ProblemDetails类名称中额外添加了后缀‘s’?
为什么ASP.NET中的ProblemDetails类使用复数命名?
按照MSDN的常规类命名规范,类名确实应该用单数(除非是明确的集合类,比如List<T>这类),但ProblemDetails是个特殊情况,原因主要有这几点:
- 对齐官方标准:这个类是完全遵循RFC 7807《HTTP API的问题详情》定义来设计的,该规范里就明确使用了"Problem Details"这个复数表述,微软为了和国际标准保持一致,直接沿用了这个命名,避免和标准术语产生偏差。
- 语义适配:虽然单个
ProblemDetails实例通常用来描述一个主要问题,但它的结构支持扩展出多个子错误(比如很多场景下会添加errors字段来罗列多个校验失败项),复数名称更能体现它可以承载一组关联问题细节的能力,而非仅仅描述单个问题。 - 向后兼容性:
ProblemDetails在ASP.NET Core早期版本就已经被引入作为标准错误返回类型,大量现有代码、文档和第三方库都依赖这个类名,为了不破坏已有生态,官方没有修改为单数的ProblemDetail。
关于最佳实践的建议
在你自己的代码中,除非是需要和这类标准规范、框架内置类型做对齐,否则还是严格遵循MSDN的单数类名规则;如果是自定义的问题描述类,没有强制对齐需求的话,用ProblemDetail会更符合常规命名习惯。
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

