设计互联网科技首页投稿(暂停使用,暂停投稿)

探索命名之美(一)

2016-06-25  本文已影响374人  nimomeng

更新的命名方法,请参见第二篇

"好多人都故意在文章开头引用诗句来表达自己的情怀,我从来不干这种事" —— nimomeng

口、 引子

“你的函数名字太难读懂了!”

“代码不仅仅要实现需求,还应该能让别人看懂。”

“你这个代码命名很不合理!”

很多新码农在工作中总会被老鸟批评程序命名的陋习,我也被批评过很多次。痛定思过,我决定要研究应该怎么命名,为什么要给函数一个好的命名很难,应该怎么样给函数命名。

一、 大牛们怎么看函数命名

Stephen Wolfram[1][2]对于函数命名进行了表述,总结了什么样的命名是好的命名,什么样的命名会给人造成困扰;同时他说,函数命名的过程就像一首短诗,值得仔细推敲,细细品味。

Xah Lee[3]指出,好的命名应该可以让领域外的人一目了然,批评了Lisp语言的命名,如cdr,car,cons,认为这些命名让不懂Lisp的人看得不知所云,也批评了pop、push、shift这些命名,认为这些命名都与数据结构有过于深刻的关联。他认为这些过分含有领域背景的命名都是风格不好的命名。

Marcus M. Edvall[4]认为,命名应该尽量从简,而且推荐用三个字母的前缀来区分各个函数的命名,如ibm公司定义的函数用ibm_xxx来标识,或者文件模块的函数用fil_xxx来标识。
大牛们的观点总结如下:

好的命名 坏的命名
简单,可以望文生句 用词太过宽泛
跨领域,外行一看便知 用词太过技术化
优美的像一首极简的诗 用容易产生歧义的词
在充分理解函数功能的基础上进行 函数本身功能实现有问题

可是,在现实世界中,起名字并不是特别困难的事,为什么在程序语言里给函数命名是一件看起来非常困难的事呢?

二、 人类世界语言VS程序语言

这种困难,归根结底是人类世界的语言和程序语言存在差异,主要在以下三个方面:

人类语言 程序语言
定义不清晰,逐渐细化 完全、清晰、明确的定义
含义不唯一,需要上下文 有名函数具有严格、唯一的含义及使用场景
更容易来造词 只能在已有语言基础上来拼接

三、 如何给一个函数命名

我认为,可以通过以下六种方法进行函数命名:

四、 Mathematica 7 命名统计分析

Mathematica是一款科学计算软件,很好地结合了数值和符号计算引擎、图形系统、编程语言、文本系统、和与其他应用程序的高级连接。而且作为一款跨领域软件,Mathematica的函数名能做到让不同领域的人一目了然,其命名很具有参考意义。

分析数据来源:Mathematica线上API的所有函数名

分析方法:通过提取API相关函数名并处理(如把复合词进行切词)并调用金山词霸线上API对所有函数名进行翻译,取第一个释义的词性进行统计,统计结果如下:


mathenmatica7.png

统计结果分析:

通过上述分析结果可以看出,名词和动词占了命名的最大比例。在对其中的名词和动词进行进一步分析之后,结论如下:

五、 总结

文章通过对命名进行研究,总结出一种函数命名方法,并通过对Mathematic的API函数名进行分析,得出各种情况下的词组组合情况。

希望小文能对各位朋友的工作起到帮助!

六、 参考文献

  1. Stephen Wolfram 《Ten Thousand Hours of Design Reviews》
  2. Stephen Wolfram 《The Poetry of Function Naming》
  3. Xah Lee 《The Importance of Terminology‘s Quality In Computer Languages》
  4. Marcus M. Edvall 《How to name a function to minimize function names conflict》
上一篇 下一篇

猜你喜欢

热点阅读