计算机编程里的美化和丑化概念

描述

我们不提倡以貌取人,但是人确实有美丑之别,美人让人赏心悦目,丑人让人。。。不那么赏心悦目。

代码也一样。

计算机编程里有一组相关的概念,一个叫做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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分