2.2.1. 上下文是关键

重要的是要意识到关于命名的大多数建议都是需要考虑上下文的。 我想说这是一个原则,而不是一个规则。

两个标识符 iindex 之间有什么区别。 我们不能断定一个就比另一个好,例如

  1. for index := 0; index < len(s); index++ {
  2. //
  3. }

从根本上说,上面的代码更具有可读性

  1. for i := 0; i < len(s); i++ {
  2. //
  3. }

我认为它不是,因为就此事而论, iindex 的范围很大可能上仅限于 for 循环的主体,后者的额外冗长性(指 index)几乎没有增加对于程序的理解。

但是,哪些功能更具可读性?

  1. func (s *SNMP) Fetch(oid []int, index int) (int, error)

  1. func (s *SNMP) Fetch(o []int, i int) (int, error)

在此示例中,oidSNMP 对象 ID 的缩写,因此将其缩短为 o 意味着程序员必须要将文档中常用符号转换为代码中较短的符号。 类似地将 index 替换成 i,模糊了 i 所代表的含义,因为在 SNMP 消息中,每个 OID 的子值称为索引。

贴士: 在同一声明中长和短形式的参数不能混搭。