【问题标题】:Should I abbreviate variable and function names in a library?我应该缩写库中的变量和函数名称吗?
【发布时间】:2021-03-27 10:03:58
【问题描述】:

我正在开发一个 C 数据结构库,我希望我的代码清晰,没有太多的 cmets 并且仍然可读,但我正在努力命名。

  1. 我应该使用sinit()linit()stackInit()listInit() 来区分堆栈和列表函数吗?
  2. 保存List的变量应该是list_t *ls或者list_t *list?
  3. 保存结构中每条数据大小的变量应该是datasizedataSize
  4. 在一个结构中,我有一个指向函数(由用户提供)的指针,该函数将比较两个元素,它应该是 cmp 还是 compare

我知道所有这些问题大部分都是一样的,但我需要让代码中的所有案例都清楚。

【问题讨论】:

  • 这是一个基于意见的问题,不适合 StackOverflow 的问答形式,因为确实没有正确答案。只要确保你的函数名称一目了然,坚持一种大小写风格(例如camelCase vs snake_case),不要担心容易理解的常用缩写如cmp等。
  • 另外,我建议您甚至不要尝试在 C 标准库中复制一些 (IMO) 奇怪的名称/命名样式(尤其是在 string.h 中出于某种原因)(例如strstrstrpbrkallocastrcspn 等)如果不使用谷歌搜索功能的目的,将很难理解。
  • C 标准库函数名称的原因是,过去编译器可能只使用标识符的前 8 个字符来区分函数……但自中世纪以来,C 实际上要求任何实现将考虑至少 31 个第一个字符。
  • @AnttiHaapala:所需的数量从来不是八个字符。在 1990 C 标准中为 6 个,在 1999 C 标准中为 31 个。我隐约记得 IBM 操作系统模块名称有一些命名方案以适应六个字符的限制。
  • @EricPostpischil 6? :D 我的立场是正确的...6 significant initial characters in an external identifier

标签: c coding-style naming-conventions naming


【解决方案1】:

stackInit()listInit()sinit()linit() 更具可读性。

声明list_t *listlist_t *ls 更具可读性。

至于你使用骆驼风格的函数名,那么当变量名与函数名不同时会更好。所以我更喜欢使用datasizedata_size 而不是dataSize

cmp 是单词comparecomparison 的常用同义词。英特尔处理器有这样的汇编程序命令。所以你可以使用cmpcomparecomparison

【讨论】:

  • 虽然如果它是一个只有一个参数的短函数,list_t *list 并没有真正传达比list_t *l 更多的信息.​​..
  • @AnttiHaapala 名称“l”可以在代码中的其他地方遇到。所以很难确定它的含义以及它是否确实是“l”而不是“1”。
  • 是的,但幸运的是,在 Stack Overflow 之外,通常有有效的语法突出显示:D
猜你喜欢
  • 2019-03-10
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-08
  • 2010-12-05
相关资源
最近更新 更多