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

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

    关注

    96

    文章

    2943

    浏览量

    66613

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

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

收藏 人收藏

    评论

    相关推荐

    ROM对计算机性能的影响

    只读存储器(ROM)是计算机硬件中的一个重要组成部分,它负责存储计算机启动时必需的固件和基本输入输出系统(BIOS)。ROM的性能和质量对计算机的整体性能有着深远的影响。 ROM的基本概念
    的头像 发表于 11-04 10:31 103次阅读

    简述计算机总线的分类

    计算机总线作为计算机系统中连接各个功能部件的公共通信干线,其结构和分类对于理解计算机硬件系统的工作原理至关重要。以下是对计算机总线结构和分类的详细阐述,内容将涵盖总线的基本
    的头像 发表于 08-26 16:23 770次阅读

    晶体管计算机和电子管计算机有什么区别

    晶体管计算机和电子管计算机作为计算机发展史上的两个重要阶段,它们在多个方面存在显著的区别。以下是对这两类计算机在硬件、性能、应用以及技术发展等方面区别的详细阐述。
    的头像 发表于 08-23 15:28 1180次阅读

    计算机系统的组成和功能

    计算机系统是一个复杂而庞大的概念,它涵盖了计算机硬件、软件以及它们之间相互作用的所有元素。为了全面而深入地探讨计算机系统,本文将从定义、组成、功能、发展历程以及未来趋势等方面进行详细阐
    的头像 发表于 07-24 17:41 652次阅读

    计算机视觉属于人工智能吗

    和解释视觉信息,从而实现对图像和视频的自动分析和处理。 计算机视觉的基本概念 2.1 计算机视觉的定义 计算机视觉是一门研究如何使计算机具有
    的头像 发表于 07-09 09:11 1008次阅读

    工业计算机与普通计算机的区别

    在信息化和自动化日益发展的今天,计算机已经成为了我们日常生活和工作中不可或缺的工具。然而,在计算机领域中,工业计算机和普通计算机虽然都具备基本的计算
    的头像 发表于 06-06 16:45 1077次阅读

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

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

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

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

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

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

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

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

    计算机原码、反码、补码的概念

    计算机内部数值是以补码的方式进行存储的,采用补码进行数据存储当然有其优点,下面会一一介绍相关内容,让各位彻底弄懂原码、反码、补码的概念以及为什么采用补码作为数据存储的方式。
    的头像 发表于 01-09 12:25 3657次阅读
    <b class='flag-5'>计算机</b>原码、反码、补码的<b class='flag-5'>概念</b>

    量子计算机的作用有哪些

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

    工业计算机与商用计算机的区别

    工业计算机与商用计算机的区别  工业计算机和商用计算机是两种应用于不同领域的计算机系统。虽然它们在技术方面存在一些共性,但在功能、设计、可靠
    的头像 发表于 12-27 10:50 579次阅读

    什么是后量子密码学?量子计算机vs经典计算机

    后量子密码学(Post-Quantum Cryptography,PQC)是在经典计算机上定义和执行算法,研究量子计算机和经典计算机都无法破解的新密码系统。后量子密码学的提出是为了抵抗量子计算
    的头像 发表于 12-19 11:42 1554次阅读

    工业计算机和PLC的区别

    工业计算机和PLC的区别  工业计算机和PLC(可编程逻辑控制器)是工业自动化领域中常用的两种控制设备。虽然它们都有着用于控制和监控工业过程的功能,但在设计原理、适用范围、性能特点和应用场景等方面
    的头像 发表于 12-15 10:10 827次阅读