核心 cpp 指南中 f(T*, int) 接口与 f(span<T>) 接口的含义
Meaning of f(T*, int) interfaces vs. f(span<T>) interfaces in core cpp guidelines
核心 cpp 指南的第 P3 部分在其执行部分提供了以下模式:
f(T*, int) interfaces vs. f(span) interfaces
任何人都可以向想要了解现代 C++ 的固执的老 C 程序员解释这意味着什么吗?
P3 部分是关于 "Express intent" 的。因此,这个想法是哪个更清楚地表达了意图。
考虑 f(T*, int)
。我们要问:
- 指针指向单个对象还是数组?
- 整数是代表数组大小还是其他?
函数签名中的信息没有很好地表达。它必须通过其他方式获得,例如文档、命名约定等
另一方面,当我们看到 f(span<T>)
有一个明确且不容置疑的意图时:该函数接受一个数组(通过 span<T>
对象引用)。意图很明确,因为这是 span
的唯一目的,不像指针是多用途的。
因此,f(span<T>)
如果意图是采用数组,则可以更好地说明意图。
核心 cpp 指南的第 P3 部分在其执行部分提供了以下模式:
f(T*, int) interfaces vs. f(span) interfaces
任何人都可以向想要了解现代 C++ 的固执的老 C 程序员解释这意味着什么吗?
P3 部分是关于 "Express intent" 的。因此,这个想法是哪个更清楚地表达了意图。
考虑 f(T*, int)
。我们要问:
- 指针指向单个对象还是数组?
- 整数是代表数组大小还是其他?
函数签名中的信息没有很好地表达。它必须通过其他方式获得,例如文档、命名约定等
另一方面,当我们看到 f(span<T>)
有一个明确且不容置疑的意图时:该函数接受一个数组(通过 span<T>
对象引用)。意图很明确,因为这是 span
的唯一目的,不像指针是多用途的。
因此,f(span<T>)
如果意图是采用数组,则可以更好地说明意图。