让代码在键盘上跳“华尔兹”的10大原则

news2024/11/23 11:24:49

大家好,我是小❤,一个漂泊江湖多年的 985 非科班程序员,曾混迹于国企、互联网大厂和创业公司的后台开发攻城狮。

引言

编程界都知道,代码是一种艺术 —— 它是对技术职责和美学眼光的完美融合。

正如一名工匠在雕琢他的作品,软件开发者在编码时也需要遵守一定的原则与标准,确保软件的质量、可维护性和可扩展性

仅仅编写功能代码是不够的!

我们需要掌握并实践好代码原则,使我们的代码像优雅的艺术品一样经得起时间的考验,让它们可以在键盘上跳“华尔兹”!

接下来,让我们一起探索能在键盘上跳舞的好代码应该遵循的十大原则。

01 遵循代码规范

参与一个项目的开发就像是加入一个乐队,每个人都需要在同一个节拍上演奏。同理,代码规范就是确保每个程序员在同一节拍上编码的指挥棒。它定义了变量命名、缩进、注释格式等编码标准,就像交通信号灯一样提供了统一的行动指导。

无论是 PEP 8Google Java Style 还是其它,坚持一套约定俗成的代码规范,可以保证代码质量的一致性与可读性。

遵循这些规范不仅使得代码整洁,也让其他开发者更容易理解你的意图,就像是在代码间搭建了一座沟通的桥梁。

02 文档和注释

假想一下,你在参加一个宝藏寻宝游戏,但是没有地图,没有线索,这将会是多么困难。同样地,在没有文档和注释的代码中导航就像在黑暗中摸索。

良好的文档和注释就是那张宝图,它们详细说明了代码的功能、用途及其工作方式,为未来的开发者或维护者对代码库进行迭代和扩展铺平道路。

请记住,写注释就像写留言一样,不仅要简明扼要,更要让接收者能迅速理解信息的核心。

好的代码应该编写清晰的文档和注释来解释复杂的逻辑和决策,注释应该解释为什么采取某种做法(Why),而不是解释具体做什么(What,这是代码内容应该做的)。文档和注释应该清晰、简洁,并持续更新。

03 健壮性

软件就像是一架飞机,在飞行中会遭遇各种气候和异常情况。一个健壮的软件能够灵活应对这些情况,保持平稳飞行。

在编程中,这意味着我们要对各种输入情况做好准备,避免软件因异常而崩溃。比如,设计良好的错误处理逻辑能够在遭遇问题时给出明确的指示,而不是让用户对一个神秘的错误代码感到茫然。

并且,好的代码都应该能处理各种预期外的攻击,而不会发生崩溃或产生不可预测的结果,最常见的做法就是使用 try、recover 等机制捕获并处理异常。

04 遵循SOLID原则

单一职责(Single Responsibility)、开闭原则(Open/Closed)、里氏替换(Liskov Substitution)、接口隔离(Interface Segregation)和依赖反转(Dependency Inversion)——这五大原则(简称 SOLID)是编写扩展性强且容易维护代码的基石。

其中,单一职责原则让每个模块像乐队中的独奏家,只负责一个任务。开闭原则确保了软件和印刷术一样,新文字的加入不需要改变原有的文字。依赖倒置原则则像是汽车的引擎,可以随时更换而不改变整辆汽车的外观。

掌握好 SOLID 原则,我们就能编写出具有良好结构和扩展性的软件。

05 易于测试

测试软件就像是举办一场无数次的彩排,如果演员们总是即兴表演,那么正式演出免不了出错。

同理,我们编写的代码必须能够被轻松地测试,这意味着我们在编码时就要考虑到测试的方方面面。一个好的实践是采用测试驱动开发(TDD),先写测试,然后编码来满足测试。

这样的开发模式鼓励简洁的设计,增强了代码的可靠性与质量。

软件的可测试性尤为重要,特别是线上代码。好的代码应该易于测试,一方面需要努力降低每个函数和组件的复杂度,让测试变得简单直观;另一方面应该支持自动化测试,以确保其行为符合预期。

06 适度抽象

抽象是一个很美妙的概念,它就像是艺术家在画布上简化形状和颜色,提取出事物的本质。

代码中的抽象消除了重复和不必要的复杂度,创造了易于理解和重用的组件。但是,就像调味料一样,过多会掩盖本味,过少则显得索然无味。

编程时,度的把控需要经验的积累和实践的锻炼。好的代码应该找到适中的抽象层次,既不过度设计,也不应忽视长远的可拓展性和可维护性。

07 利用设计模式,但不要过度设计

设计模式是前人智慧的精华,它们提供了问题解决的模板。我们可以将其看作建筑中的标准构件,帮助我们搭建软件的结构。

然而,每个项目都是独特的,过度引入设计模式就像在小屋里安置了宫殿的楼梯,显得不合时宜,不必要的复杂性会影响代码的可理解性和维护成本。设计时,我们要恰如其分地采用设计模式,确保它们能真正为解决问题服务。

设计模式是前人编码的经典指南,它能帮助我们解决一些常见问题。但是,每一种模式都有它的应用场景,过度使用或错误地使用设计模式,可能会让你的代码变得更加复杂和难以理解。

08 减少全局依赖

全局变量和对象就像是一张蜘蛛网,任何一个部分的震动都能牵动整个网。代码中的全局依赖增加了各组件间的耦合度,使变化产生连锁反应,引发意想不到的问题。

使用依赖注入和模块化,可以最小化全局依赖,使代码更加模块化、测试和维护也更为简单。

09 持续重构

在软件开发的世界中,重构不仅是一种好习惯,更是对未来的一种投资。

我们知道,即使一座城市的规划初期再完美,随着时间的推移,一些布局需要调整,设施需要升级。软件开发亦是如此,源代码也需要随着需求的演变和技术的进步而不断演进。

经常性的重构有助于保持代码的清洁和组织,就像是定期整理和优化城市规划。

10 安全是头等大事

在编写代码时,安全性应当是第一考虑的。这就像是构建一座大楼,必须确保结构的坚实且富有弹性,以防自然灾害。

代码中的安全措施需预防SQL注入、跨站脚本攻击等,就好比建筑师在设计时加入地震防范功能。每一行代码都应经过安全性考量,以避免成为未来潜在的安全漏洞。

小结

有个伟人曾经说过:代码不该是枯燥的业务说明,而应是一个充满活力的生态系统,而上述的每一个原则和实践都是维持这个生态平衡的关键要素。

通过把握这些原则,我们可以创造出令人赞赏的软件艺术品,而不是业务 shishan!

在键盘的敲击声中,我们不仅仅是在编写代码,我们还在创造数字世界中的诗篇,可能被无数用户阅读和体验的诗篇。

好了,以上就是本文的全部内容了,如果觉得文章有所启发或收获,不妨点赞、分享,加入在看,这对我是最大的鼓励!

如果你有任何问题或想了解更多,也随时在评论区提问,谢谢你的阅读!

xin猿意码

画船听雨眠,沙漠倚云眠。码何为?曲肱而枕之

ღ( ´・ᴗ・` )比心

我是小❤,我们下期再见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1406186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

白酒:制曲工艺的特点与核心技术

白酒,其制曲工艺是品质的关键所在。制曲是酿酒过程中重要的环节,对于酒的口感和品质有着至关重要的影响。在云仓酒庄豪迈白酒的制曲工艺中,有几个显著的特点和核心技术。 制曲原料丰富多样,除了常见的麦类,还可采用了…

菜鸟导入导出assetbundle

因为菜鸟不会用unity c#什么的,所以最后参考贴吧的方法用的是UABE(Unity Assets Bundle Extractor)和UABEA(Unity Assets Bundle Extractor Avalonia) 可以去github上下载 对于txt、xml什么的可以直接改,但是byte文件里还是会有一些类似乱码的东西&…

使用 Swift 代码优化项目编译速度

引言 软件的性能是评价一个软件质量的重要指标,尤其在今天这个时代,性能已成为大型项目不可或缺的考虑因素之一。对于用户量极大的软件,如网银系统、在线购物商城等,更是必须保证其高效稳定的性能。在这种背景下,优化…

AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(十)

又是认真学习的一天。 1.Git 初识 2.掌握 Git 仓库 3.Git 的三个区域 git ls-files 查看当前暂存区有哪些文件 4.Git 文件状态 5.Git 暂存区使用 使用git restore命令恢复修改过的index.css 使用git rm --catched命令从暂存区移除index.css文件 再用git add .放回9(…

使用 SpringBoot 框架手撸一个本地缓存工具!

在实现本地缓存的时候,我们经常使用线程安全的ConcurrentHashMap来暂存数据,然后加上SpringBoot自带的Scheduled定时刷新缓存。虽然这样可以实现本地缓存,但既不优雅也不安全。 那看一下我的思路,首先看一张图! 1.每个处理器都有…

喷墨打印机市场分析:预计2029年将达到548亿美元

喷墨打印机是将彩色液体油墨经喷嘴变成细小微粒喷到印纸上,有的喷墨打印机有三个或四个打印喷头,以便打印黄、品红青黑四色;有的是共用一个喷头,分四色喷印。 喷墨打印机是在针式打印机之后发展起来的,采用非打击的工作方式。比较突出的优点有…

kubernetes Pod 异常排查步骤

kubernetes Pod 异常排查步骤 详细排查图查看容器状态查看容器列表容器未启动成功排查容器启动成功排查pod状态对应原因 详细排查图 查看容器状态 查看容器列表 查看容器列表,最好在后面跟上命名空间,不跟上查询出来是默认的 kubectl get pods -n kubesphere-system单独查看某…

eNSP学习——理解ARP及Proxy ARP

目录 名词解释 实验内容 实验目的 实验步骤 实验拓扑 配置过程 基础配置 配置静态ARP 名词解释 ARP (Address Resolution Protocol)是用来将IP地址解析为MAC地址的协议。ARP表项可以分为动态和静态两种类型。   动态ARP是利用ARP广播报文,动态执行并自动进…

sprignboot电商书城源码

运行环境: jdk1.8,maven,mysql 项目技术: 后台主要是springbootmybatisshirojsp,前端界面主要使用bootstrap框架搭建,并使用了ueditor富文本编辑器、highcharts图表库。 有需要的可以联系我。 功能介绍: 该系统分为前台展示和后台管理两…

芯课堂 | 通过ISP升级芯片固件方法及框架

一、升级原理 芯片在应用前,是一颗裸片,内部没有任何驱动或应用程序。芯片在贴上PCB板子后,会实现各种功能,这是时候会开发对应的驱动或者应用程序,在芯片上面运行的程序,一般称之为固件(Firmw…

低代码,让软件开发不再复杂

低代码一词,有人认为它是第四代编程语言,有人认为它是开发模式的颠覆,也有人认为它是企业管理模式的变革……有很多声音,社区讨论很热烈。 即使这样,至今也有不少人还不知道这项技术,今天笼统的介绍一下低代…

DataStream API(输出算子)

源算子 源算子 转换算子 转换算子 输出算子 1.连接到外部系统 连接外部系统是计算机科学和信息技术领域中常见的一个任务,通常涉及到与外部数据源或服务进行交互。具体的方法和工具会根据不同的应用场景和需求而有所不同。以下是一些常见的连接外部系统的方法&…

BioTech - 量子化学与分子力场

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/135787607 量子化学是应用量子力学的规律和方法来研究化学问题的一门学科,主要关注分子的结构、性质和反应过程。 量子化学的理论方法…

Midjourney基础 | 使用流程 注册,基础文生图,图的放大微调,保存

文章目录 1 使用流程2 生成自己的第一张图3 图的放大,微调3.1 放大3.2 微调变化 4 图的保存 Midjourney是依托于Discord的,但我也是通过Midjourney才了解的Discord 维基百科说~~Discord是一款专为社群设计的免费网络实时通话,主要针对游戏玩家…

Dify学习笔记-手册(三)

1、应用构建及提示词 在 Dify 中,一个“应用”是指基于 GPT 等大型语言模型构建的实际场景应用。通过创建应用,您可以将智能 AI 技术应用于特定的需求。它既包含了开发 AI 应用的工程范式,也包含了具体的交付物。 简而言之,一个应…

【设计模式】美团三面:你连装饰器都举不出例子?

什么是装饰器模式? 装饰器模式,这个设计模式其实和它的名字一样,非常容易理解。 想象一下,每天出门的时候,我们都会思考今天穿什么。睡**衣、睡裤加拖鞋,还是西装、领带加皮鞋?又或者说是&…

获取b站目录

参考链接&#xff1a; JS获取B站视频选集目录 Week6 - 知乎 代码 var x document.getElementsByClassName("clickitem"); var i; for (i 0; i < x.length; i) {var page_num x[i].getElementsByClassName("page-num")[0].innerText;var part x[i…

huggingface学习|云服务器部署Grounded-Segment-Anything:bug总会一个一个一个一个又一个的解决的

文章目录 一、环境部署&#xff08;一&#xff09;模型下载&#xff08;二&#xff09;环境配置&#xff08;三&#xff09;库的安装 二、运行&#xff08;一&#xff09; 运行grounding_dino_demo.py文件&#xff08;二&#xff09;运行grounded_sam_demo.py文件&#xff08;三…

[反转链表] [合并两个有序链表][分割链表]

这里写目录标题 反转链表合并两个有序链表分割链表 反转链表 1、题目&#xff1a; 2.思路  思路1&#xff1a;建立一个newHead,取一个节点进行头插。具体做法如下&#xff01; 建立一个newHead(新头)&#xff0c;由于一个节点里面存的是下一个节点的地址&#xff0c;如果取…

华夏基金“冰火两重天”:产品增量不增值,靠什么赢得用户?

近日&#xff0c;华夏基金发布关于华夏野村日经225交易型开放式指数证券投资基金&#xff08;QDII&#xff09;&#xff08;下称“华夏野村日经ETF”&#xff09;二级市场交易价格溢价风险提示及临时停牌公告。 公告内容显示&#xff0c;华夏野村日经ETF二级市场交易价格明显高…