为什么给类、方法、变量命名这么难?

为什么命名很重要?

想象一下,你现在正在敲代码(好像并不难想象,大概压根也不用想象)。这时候,你需要创建个新变量,也可能是新方法,恩,还是用方法当做例子吧。这时候问题就来了:起个什么名字好呢?你脑海里可能瞬间会想出几个,但是假设,假设你在那一瞬间脑洞大开,突发奇想:要不去Google上搜一下看看?你还挺务实,也想尽最大努力干好这事儿,所以就一直在Google上找有没有什么约定俗成的命名规则。但事实表明,你能搜到的只有下面这些东西:

变量命名的规则和习惯总结如下:

变量的名字必须区分大小写,可以是任何合法的标识符——一个不限长度的Unicode字符和数字序列,但需要以字母、美元符号“ $ ”或者下划线“_”开头。

是的,你搜“怎样给变量命名?”就会搜到上面这东西。编程语言的创造者和社区提出了很多语法相关的规则和惯例。

但这不是我们今天要讨论的。

为什么命名很重要?

编程界最有名的格言之一是这样说的:

在写代码的时候,你要经常想着,那个最终维护你代码的人可能将是一个有暴力倾向的疯子,并且他还知道你住在哪里。——约翰 F. 伍兹

同理,命名时也得这么想。将后期代码维护考虑进自己的编程中永远也没有错。在任何一个项目中,代码维护都是迄今为止花费最昂贵的一个阶段。所以我们应该竭尽所能的降低维护阶段的花销。

别人一拿到你的代码,就能愉快顺畅的阅读和学习,这才是最最正确的命名方式。几条命名规则声明也许就能免去代码维护人员上百次的搜索,这样他们就不至于检查函数中每个变量的使用,才确保变量名没写错。

为什么很难正确命名代码?

新手程序员总会花很多时间学习一门编程语言、代码语法、技术和工具。他们觉得如果掌握了这些东西,就能成为一个好程序员。然而事实并不是这样,事实上,编程不仅仅关乎掌握技能和工具,更重要的是在特定范畴内解决问题的能力,还有和其他程序员合作的能力。因此,能在代码中准确的表达自己的想法就变得异常重要,因为这样才能被其他人很好的理解。

我每天都会写很多代码审查,所以知道正确命名代码的重要性。我还注意到一件事儿,拥有不同编程背景的开发人员给变量命名的习惯也都不一样。

Objective-C 的冗长命名。

 

C语言中的斐波那契算法 看见那些注释了吗?

当然了,这种冗长并不是规则。人们用任何一种语言都能写出优秀或糟糕的代码,只是我观察到这样一种现象,使用相同语言的程序员会表现出一种共同的命名习惯。

选一个好的名字其实很难,你得有高超的描述能力和共同的文化背景,这是个教学上的问题,而不是技术、业务或者管理上的问题,这也是不少我们领域的人在这点上做的不好的原因。

那么如何给代码的特定部分命名呢?

你起的名字必须得能透露出你的意图,还得通过这个名字说明它能干什么以及不仅仅能干什么。你可能觉得这么说有点夸张,但我确实很喜欢我同事们的命名方式。

*在下面的文章中,我打算直接使用一套准用的命名规则,进而提升代码的可读性和描述性。

为什么不能直接在代码中写注释呢?

我刚刚工作的时候,有人跟我说过:

注释即致歉。

一旦写了注释,那就意味着你没能选一个描述更加清楚的名称,也意味着你没使用具有解释性的变量、函数,甚至类,更意味着这些代码变得不可维护。注释就是在为这些失败而道歉。其实根本不必写注释,因为变量和方法的名称本就应该是可以自证的,如果需要注释的话,那就意味着代码不够一目了然。重命名吧。如果一个名称需要用注释来解释,那它也不具备什么描述性了。

命名的时候你就当做注释不存在,这能强迫你用最简单,最一目了然的方法写出高可读性的代码。

相反的做法

Yegor Bugayenko 最近在文章中提出了一个很有趣的观点。他这种方式更多的关注的是变量本身,而不是变量的命名问题。他指出很多变量其实都很不必要,所以不如就匿名地创建它们,不在本地给它命名。

“在读代码的时候,变量越多,我就得花越多的精力来看懂这些代码的作用和效果。我最多能接受代码中有4个变量,这是我能轻松记住的变量数量,再多就得考虑辞职不干了。”

在某些情况下,这种做法确实很有效。新变量的引入必然会使代码变得更长,更复杂,因为需要额外的行来声明。代码的读者必须记好多变量才能看懂。不过,具体情况具体分析,如果那些变量能够帮助理解代码,该引入就得引入。

拿我最近的一个项目当例子吧:

一开始我还觉得这个附加名称没什么必要,幸亏同事跟我说明了这个附加名称的重要性。

订阅我们,立即获取最新内容。

https://tinyletter.com/KamilLelonek

总结

或许代码命名的肮脏小秘密就是如此:想起个好名字,你就需要成为一个好作者。开发者应该使用代码而不是注释来讲述程序,这就需要我们变成“讲故事的人”。想一个准确的,一目了然的名称难度确实很大。但是也请你记住,名称不是为编译器准备的,而是为了和其他人交流而准备的。

再写代码的时候,遵循这些规则试试,看看你代码的可读性是不是更好了。如果你在维护别人的代码的时候遇到了可读性低的问题,用重构工具来解决问题,效果会立竿见影,并且基本上再也不用担心这个问题了。

参考资料

推荐阅读

1 3 收藏 评论

关于作者:一只键盘

pythoning..... 个人主页 · 我的文章 · 10

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部