0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

Linux阅码场 来源:Linux阅码场 作者:Linux阅码场 2021-04-16 11:46 次阅读

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

代码也一样。

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

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

    关注

    94

    文章

    2925

    浏览量

    66056

原文标题:漫谈代码可读性

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【量子计算机重构未来 | 阅读体验】+ 了解量子叠加原理

    作为零基础初学级的量子小白,对神秘诡异的量子世界充满了好奇。说起量子计算机,我有许多问号,量子计算机的工作原理是什么?它和电子计算机有什么区别?量子计算机如何
    发表于 03-13 17:19

    【量子计算机重构未来 | 阅读体验】+量子计算机的原理究竟是什么以及有哪些应用

    计算方法的区别传统方法是,按照不走枚举所有情况,而量子计算是一次处理所有情况,是一步到位。但是这里又有疑惑了,量子计算如何实现的一步到位呢, 这里引入了量子比特和传统计算机比特的
    发表于 03-11 12:50

    【量子计算机重构未来 | 阅读体验】+ 初识量子计算机

    欣喜收到《量子计算机——重构未来》一书,感谢电子发烧友论坛提供了一个让我了解量子计算机的机会! 自己对电子计算机有点了解,但对量子计算机真是一无所知,只是听说过量子纠缠、超快的运算速
    发表于 03-05 17:37

    计算机为什么利用反码来实现减法?

    元器件的限制。当时,计算机的电路设计主要采用位操作(二进制)来实现。为了能够有效地表示负数,人们引入了反码的概念。使用反码可以使计算机系统在进行加法和减法运算时使用相同的逻辑电路,从而降低了硬件成本和复杂度。 2.
    的头像 发表于 02-19 15:10 224次阅读

    量子计算机的未来

    了解量子计算机对于工业生产和产品研发的使用
    发表于 02-01 15:30

    量子计算机的作用有哪些

    的影响,被认为是未来计算机技术的重要发展方向。 一、量子计算机的基本概念 量子计算机的核心是量子比特,与经典计算机中的比特不同,量子比特可以
    的头像 发表于 12-30 14:32 654次阅读

    数控加工计算机辅助编程步骤

    数控加工程序可通过手工编程计算机自动编程来获得。目前计算机自动编程采用图形交互式自动编程,即
    发表于 10-18 09:39 257次阅读

    工业计算机的应用

    工业计算机在半导体设备上的应用,具体在哪一方面。比如说图像处理使用什么样的计算机,工业控制使用哪一方面的计算机
    发表于 09-12 14:19

    计算机组成与设计

    组成与设计的一些基本概念和内容,同时探讨这门课程的重要性以及对未来的影响。 一、计算机组成原理 计算机组成原理是计算机科学中的一个重要分支,它主要研究
    的头像 发表于 08-17 12:37 927次阅读

    人工智能和计算机的区别

    人工智能和计算机都是现代技术领域中重要的概念,是计算机科学和信息技术中的两个重要领域。虽然这两个概念都与计算机有关,但它们之间具有不同的含义
    的头像 发表于 08-09 08:09 1488次阅读
    人工智能和<b class='flag-5'>计算机</b>的区别

    人工智能和计算机的区别

     人工智能和计算机都是现代技术领域中重要的概念,是计算机科学和信息技术中的两个重要领域。虽然这两个概念都与计算机有关,但它们之间具有不同的含
    的头像 发表于 08-06 16:42 7057次阅读

    计算机刚发明时程序员是怎样编程的?

    关于上古时期程序员编程这个话题我想我得从头开始讲起,当我开始编程时使用的计算机是这样的。
    发表于 06-26 10:33 466次阅读
    <b class='flag-5'>计算机</b>刚发明时程序员是怎样<b class='flag-5'>编程</b>的?

    计算机视觉相关概念总结

    为了帮助同事和客户了解更多有关计算机视觉和AI的更多信息,我们言简意赅介绍一些计算机视觉和AI术语,希望能帮助到大家。
    的头像 发表于 05-31 10:11 514次阅读

    计算机网络的 89 个基本概念

    计算机网络中的概念也是非常庞杂,理解起来比较困难,所以这里,我给大家汇总了计算机网络中 89 个常见的概念,希望对你有所帮助。 1. `主机
    的头像 发表于 05-18 15:53 645次阅读
    <b class='flag-5'>计算机</b>网络的 89 个基本<b class='flag-5'>概念</b>

    计算机通信的简单概念

    计算机通信指的是在两个或多个计算机之间进行数据传输和信息交换的过程。计算机通信可以分为点对点通信和广播通信两种模式。在点对点通信模式下,数据从一个计算机直接传输到另一个
    发表于 05-09 16:48 1195次阅读