我们不提倡以貌取人,但是人确实有美丑之别,美人让人赏心悦目,丑人让人。。。不那么赏心悦目。
代码也一样。
计算机编程里有一组相关的概念,一个叫做Prettify(美化),一个叫做Uglify(丑化)。
Prettify的典型应用是在JSON/XML/HTML这些数据的呈现上,对眼睛不友好的json,乌央乌央的一坨,让人看起来很费劲:
[{“name”:“Mac”,“language”:“python”,“major”:“computer application”},{“name”:“Ava”,“language”:“C++”},{“name”:“Ryan”,“language”:“Java”}]
对眼睛友好的json,层次结构清晰明了:
[
{
“name”: “Mac”,
“language”: “python”,
“major”: “computer application”
},
{
“name”: “Ava”,
“language”: “C++”
},
{
“name”: “Ryan”,
“language”: “Java”
}
]
而Uglify(以及Obfuscate/混淆)的应用场景,是在不改变代码逻辑的情况下让代码很难理解,以减少代码被剽窃抄袭的可能,起到保护代码作用。比如,以下代码很容易理解:
def get_user(username):
pass
username = ‘ava’
user = get_user(username)
以下代码和以上代码在功能上是同等的,但是非常“反人类”:
def a121(rw24__fdx):
pass
kwlekf_fw12q= ‘ava’
II11LL =a121(kwlekf_fw12q)
这个例子看似很蠢,但是它可以让我们更直观地看到代码可读性(Readability)的重要性,从而引起一些反思:自己写的代码可能是不是也像是被“丑化”过,让人看得视力下降,血压上升,怒从心头起,恶向胆边生?
代码能正确工作,这仅仅是写代码的基本要求,高质量的代码,一定具有良好的可读性。
在某种程度上来说,写代码是一种社交行为,其沟通的对象不仅包括计算机(使之可以被执行),也包括人。
这其中牵涉到人的环节很多,包括评审代码和后续的代码维护(修复缺陷、重构改进)等等,进行这些操作有一个基本前提:理解代码逻辑!用更直白的话讲,就是能看懂。
如何才能让人更容易看懂?
遵循KISS原则: Keep It Simple and Stupid!简单直白,一目了然!
我们不妨来赏析两段诗词:
“长桥卧波,未云何龙?复道行空,不霁何虹?高低冥迷,不知西东”,出自杜牧的《阿房宫赋》,描写了阿房宫的气势。
“不敢高声语,恐惊天上人”,出自李白的《夜宿山寺》,描写了山寺高楼。
这两段诗词具有一定的可比性:
都是描写建筑
作者年代相近(事实上,杜牧比李白晚生了一个世纪,离我们的年代更近)
都是传世名篇。
但是,他们的风格显然不一样。
《阿房宫赋》引经据典,辞藻华丽,但是不容易看懂,让人望而生畏。《夜宿山寺》用词简单却丝毫不牺牲诗意的表达,所以老少咸宜,贩夫走卒皆可传诵。
假如,《阿房宫赋》问世之后,我们发现阿房宫其实还有一处奇特的喷泉景观没有被写进去。如果让我在原文基础上加上相应的内容,我会很惶恐,因为连原文都没看懂,谈何修改和扩展?不敢,不敢!
但是,如果让我来扩展《夜宿山寺》,虽然水平和诗仙有云泥之别,但是因为这首诗良好的可读性,愚笨如我也读懂了,或许,我可以斗胆以狗尾续貂。。。
代码需要让计算机明白我们想让它做什么,同时也需要让人(其他程序员)可以很容易地明白其中的意图和思路。诗词的可读性影响诗词的传承,代码的可读性影响代码的传承(可维护性),在这个方面,诗词和代码是相通的。
写到这里,我的心情突然紧张起来了。我总是教训徐小胖写作文天马行空离题万里,没想到,我自己的毛病也没有改过来。为了打造严肃的软件编程技术公众号,我以后要争取做到扣题。
原文标题:漫谈代码可读性
文章出处:【微信公众号:Linuxer】欢迎添加关注!文章转载请注明出处。
责任编辑:haq
-
源代码
+关注
关注
96文章
2943浏览量
66613
原文标题:漫谈代码可读性
文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论