优秀的代码就像一封情书,别让祖传代码被称为「屎山」!

文章阐述了编程本质上是一种交流方式,优秀的代码应当像情书一样,体现个体化、真诚和深思熟虑。它应用设计模式和原则,遵循最佳实践,注重测试,表达对其他开发者的共感和尊重,成为留给后人的持久遗产。

8720fdd4e21d50c53b63f04d4ab2cf60.gif

【编者按】编程是一种交流的方式,优秀的代码就像一封情书,个体化、真诚、深思熟虑,使用设计模式与原则构造,遵循最佳实践和重视测试,表达对读者的共感和尊重,是开发者留给后续开发者的持久遗产。

原文链接:https://addyosmani.com/blog/good-code/

本文已获作者授权,未经允许,禁止转载!

作者 | Addy Osmani     译者 | 明明如月

责编 | 夏萌

出品 | 优快云(ID:优快云news)

我们有时候对编程有着过于理想化的认识,将其看作是一种抽象的艺术、科学,甚至赋予了神秘的魔力。然而,现实情况却更为务实。从根本上说,代码是一种交流的方式。在我撰写的《学习 JavaScript 设计模式》一书中,我有句引言:“优质的代码如同写给后续开发者的一封情书。” 这就是跨越时间与空间的深情交流,从一位开发者传递到另一位开发者。

b25a632952e0724d5867f4c29c2b06a7.png

代码:爱的语言

情书是充满个人色彩、真诚、深思熟虑的,它以诗意的方式表达了情感,经常通过精心选择的词句准确地传达感情。优秀的代码同样拥有这些特性。它具有个体化的特点,因为代码反映了程序员的逻辑思维和问题解决方法。优秀的代码需真诚,避免不必要的复杂性。它需要深思熟虑,考虑到下一个解读它的开发者。最重要的是,优秀的代码需精心设计,其目标是以最高效的方式解决问题。

96f178562d324c834ece30b1d740c1e6.png

设计模式与原则

正如我们有语法规则和句子结构来构造语言,以便情感可以被理解,我们也有设计模式和原则来构建代码。这些模式使得代码可扩展、可维护、高效,并且易读和易理解。设计模式提供了一种开发者共享的语汇,使他们能以公认的结构表达复杂的软件设计。

因此,优质的代码会有策略地运用这些模式,就像经验丰富的诗人会运用诗词技巧来创造共鸣一样。使用这些模式的目的并非仅仅为了使用,而是因为这些模式增强了解决方案的价值,使代码更易于理解,并确保代码库的持久性。

SOLID(单一职责原则、开闭原则、里氏替换原则、接口隔离原则和赖反转原则英文首字母构成的单词)、DRY ( Don't Repeat Yourself,强调避免在代码中出现重复的逻辑或信息)、KISS (Keep It Simple, Stupid。强调设计和实现软件时,应该尽量保持简单和直接,避免过度复杂化)和 YAGNI ( You Ain't Gonna Need It。核心思想是在编写代码时,不要去实现当前不需要的功能,也不要为未来可能需要的功能增加复杂性)不仅是原则,开发者更将它们视为编写优秀代码的基石。它们引导开发者做出明智的决策,在过度设计和过度简化之间找到平衡,最终,创造出一份会被接收者珍视的"代码情书"。

2fd9052d84e518ba7d6b40988ac88618.png

最佳实践

优秀的代码遵循已经确认的最佳实践,这就像在写情书时需要遵守的社交礼仪。适当的命名规则、模块化的设计以及详尽的注释都是其中的一部分。这些不仅仅是需要遵守的规则,更是衡量编程者在代码中对后续开发者是否负责的标准。它们的存在就是为了确保在代码的理解和传递过程中,程序员的初衷不会丢失。

f1c1ceb788f4ce3125aad34b2d94948d.png

重视测试

如同作者会对他们的作品进行校对一样,开发者也应对自己的代码进行测试。严谨的测试和测试驱动开发(TDD)是精心编写的代码的重要标志。测试能在各种环境下验证代码的性能,揭示潜在的缺陷和盲点。强大的测试框架往往就是代码质量的有力保证。

810ccb730b7d2bde5b115e2a57233a7b.png

共感与尊重

最重要的是,情书的核心在于对读者的共感和尊重,优秀的代码同样如此。编写出其他人可以阅读、理解和维护的代码,是一种对专业的尊重。这表明程序员理解他们的工作是更大的、持续的努力的一部分,软件是一个不断演进的实体,并且会有许多人在时间的推进中影响其命运。

5537addf70c0d957eb58c89d588f20f9.png

结论

最后,编程是一种创造性的活动,与写诗或画画有共通之处。然而,我们的创作之美并非仅仅由我们的算法的优雅或代码的效率决定,而是取决于他人是否能愉快、轻松地在我们的成果之上进一步构建。作为开发者,我们的职责不仅是解决当下的问题,也要确保我们的工作不会成为未来的困扰。

因此,我们编写的优秀代码不仅仅是一封情书,更是我们留给后续开发者的宝贵遗产。

你是否认同优秀的代码就像一封情书?你是否见过如情诗一样的优雅代码?你认为优秀的代码应该是怎样的?

推荐阅读:

▶阿里最新年报:万霖、蒋凡成合伙人;Twitter 网址迁移至 X.com;Cython 3.0 发布|极客头条

构建可靠软件的核心要素有哪些?

▶危!「邪恶版」ChatGPT 出现:每月 60 欧元,毫无道德限制,专为“网络罪犯”而生?

粉丝福利:

0f068bbb638e4bf8831df5a18029f348.png

内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练与应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化与训练,到执行分类及结果优化的完整流程,并介绍了精度评价与通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者与实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程与关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优与结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置与结果后处理环节,充分利用ENVI Modeler进行自动化建模与参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优快云资讯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值