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

    文章

    2954

    浏览量

    70884

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    工业边缘计算机是什么?有什么推荐?

    工业边缘计算机正在成为智能制造和工业物联网的核心设备。它部署在工厂车间、设备近端,负责实时处理海量工业数据——相比将全部数据上传云端,边缘计算能大幅降低延迟和带宽压力,同时保障生产系统的稳定运行
    的头像 发表于 05-22 14:57 151次阅读
    工业边缘<b class='flag-5'>计算机</b>是什么?有什么推荐?

    Renesas 4508 Group单芯片4位CMOS微计算机技术剖析

    Renesas 4508 Group单芯片4位CMOS微计算机技术剖析 引言 在电子设计领域,微计算机芯片的性能和特性对产品的整体表现起着关键作用。Renesas 4508 Group单芯片4位
    的头像 发表于 04-13 14:20 207次阅读

    计算机专业408考研科目

    408 跨考零基础:三个月入门到精通路线 站在2026年的节点回望,计算机考研408(计算机学科专业基础综合)早已超越了单纯的知识点考核,它更像是一场对逻辑思维与系统观的深度洗礼。对于跨考且零基
    发表于 04-11 16:44

    十进制计算机硬件体系结构及“独值”量化逻辑运算革命(一)

    采用“独值”量化逻辑理论设计十进制数字计算机,十进制网络计算机,十进制模拟计算机,十进制模糊计算机,实现计算机类型多样化,
    的头像 发表于 01-29 09:13 1205次阅读
    十进制<b class='flag-5'>计算机</b>硬件体系结构及“独值”量化逻辑运算革命(一)

    上海计算机视觉企业行学术沙龙走进西井科技

    12月5日,由中国图象图形学学会青年工作委员会(下简称“青工委”)、上海市计算机学会计算机视觉专委会(下简称“专委会”)联合主办,上海西井科技股份有限公司、江苏路街道商会承办的“上海计算机视觉企业行—走进西井科技”学术沙龙,在西
    的头像 发表于 12-16 15:39 816次阅读

    工控机与普通计算机的核心差异解析

    在工业自动化和智能制造领域,计算机设备作为核心控制单元,其选择直接影响整个系统的稳定性与可靠性。工控机与普通计算机虽同属计算设备,但其设计目标、性能侧重和应用场景存在根本性差异。准确理解这些差异,是进行正确设备选型的基础。
    的头像 发表于 11-25 14:45 2097次阅读
    工控机与普通<b class='flag-5'>计算机</b>的核心差异解析

    龙架构计算机系统能力核心课程教学研讨会圆满举行

    2025年11月8日,由教育部计算机类专业系统能力课程群虚拟教研室指导、北京航空航天大学计算机学院主办的龙架构计算机系统能力核心课程教学研讨会在京举行。
    的头像 发表于 11-14 13:52 878次阅读

    贸泽电子开售全新Arduino UNO Q单板计算机

    贸泽电子开售全新Arduino UNO Q单板计算机。Arduino UNO Q单板计算机(SBC)将高性能计算与实时控制结合,提供理想的创新平台。
    的头像 发表于 11-08 09:50 1700次阅读

    【作品合集】赛昉科技VisionFive 2单板计算机开发板测评

    赛昉科技VisionFive 2单板计算机开发板测评作品合集 产品介绍: 昉·星光 2是全球首款集成了3D GPU的高性能量产RISC-V单板计算机,搭载昉·惊鸿-7110(型号:JH-7110
    发表于 09-04 09:08

    工业计算机的重要性

    工业计算机对某些行业至关重要。我们将在下面详细解释这些行业中的工业计算机应用。1.制造与工业自动化工业级计算机非常适合制造工厂,特别是那些想要自动化装配过程的工厂。在这样的环境中,工业计算机
    的头像 发表于 07-28 16:07 838次阅读
    工业<b class='flag-5'>计算机</b>的重要性

    自动化计算机经过加固后有什么好处?

    让我们讨论一下部署坚固的自动化计算机的一些好处。1.温度范围宽自动化计算机经过工程设计,配备了支持宽温度范围的组件,使自动化计算解决方案能够在各种不同的极端环境中运行。自动化计算机能够
    的头像 发表于 07-21 16:44 835次阅读
    自动化<b class='flag-5'>计算机</b>经过加固后有什么好处?

    自动化计算机的功能与用途

    工业自动化是指利用自动化计算机来控制工业环境中的流程、机器人和机械,以制造产品或其部件。工业自动化的目的是提高生产率、增加灵活性,并提升制造过程的质量。工业自动化在汽车制造中体现得最为明显,其中许多
    的头像 发表于 07-15 16:32 990次阅读
    自动化<b class='flag-5'>计算机</b>的功能与用途

    工业计算机与商用计算机的区别有哪些

    工业计算机是一种专为工厂和工业环境设计的计算系统,具有高可靠性和稳定性,能够应对恶劣环境下的自动化、制造和机器人操作。其特点包括无风扇散热技术、无电缆连接和防尘防水设计,使其在各种工业自动化场景中
    的头像 发表于 07-10 16:36 1010次阅读
    工业<b class='flag-5'>计算机</b>与商用<b class='flag-5'>计算机</b>的区别有哪些

    Blue Lion超级计算机将在NVIDIA Vera Rubin上运行

    德国莱布尼茨超算中心(LRZ)将迎来全新超级计算机 Blue Lion,其算力比该中心现有的 SuperMUC-NG 高性能计算机提升了约 30 倍。这台新的超级计算机将在 NVIDIA Vera Rubin 架构上运行。
    的头像 发表于 06-12 15:39 1471次阅读

    NVIDIA技术赋能欧洲最快超级计算机JUPITER

    NVIDIA 宣布,搭载 NVIDIA Grace Hopper 平台的 JUPITER 超级计算机成为欧洲最快超级计算机,其运行 HPC 和 AI 工作负载的速度是第二名的两倍以上。
    的头像 发表于 06-12 15:33 1778次阅读