提高代码质量的 10 条编码原则

提高代码质量的 10 条编码原则

本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除

今天来聊聊提高代码质量的 10 条编码原则。

软件开发需要良好的系统设计和编码标准。我们在下图中列出了 10 条良好的编码原则。

在这里插入图片描述

01 遵循代码规范

我们在编写代码时,必须遵循业界公认的规范,如 “PEP 8”、"Google Java Style "等。遵守一套约定俗成的代码规范可确保代码质量的一致性和可读性。

02 文档和注释

好的代码应具有清晰的文档和注释,以解释复杂的逻辑和决策,注释应解释为什么采用某种方法(Why),而不是具体做了什么(What)。文档和注释应清晰、简洁并不断持续更新。

03 健壮性

好的代码应该能够处理各种意外情况和输入,而不会崩溃或产生不可预测的结果。最常见的方法是捕获和处理异常。

04 遵循 SOLID 原则

“单一责任”、“开放/封闭”、“利斯科夫替代”、"接口隔离 "和 “依赖反转” – 这五项原则(简称 SOLID)是编写可扩展且易于维护的代码的基石。

05 简化测试

软件的可测试性尤为重要。好的代码应该易于测试,既要努力降低每个组件的复杂性,又要支持自动测试,以确保代码的行为符合预期。

06 抽象

抽象要求我们提取核心逻辑并隐藏复杂性,从而使代码更加灵活和通用。好的代码应具有适度的抽象性,既不过度设计,也不忽视长期的可扩展性和可维护性。

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

设计模式可以帮助我们解决一些常见问题。然而,每种模式都有其适用场景。过度使用或滥用设计模式可能会使代码变得更加复杂和难以理解。

08 减少全局依赖性

如果使用全局变量和实例,我们可能会陷入依赖关系和混乱的状态管理中。好的代码应该依赖于本地化的状态和参数传递。

09 持续重构

好的代码具有可维护性和可扩展性。持续重构可以尽早发现并解决问题,从而减少技术债务。

10 安全是重中之重

好的代码应避免常见的安全漏洞。尤其是金融应用程序的代码,必须避免 SQL 注入、跨站脚本 (XSS) 和数据泄漏。

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

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

相关文章

Studio One破解版和正版的区别 Studio One购买是永久的吗

在过去的很长一段时间里,很多小伙伴想要使用一款软件时,可能第一时间就去网上寻找破解版的资源, 白嫖的资源固然很香,但随着法制的健全和人们版权意识的增强,现在破解版的资源是越来越少了。同时破解版的资源也会伴随着…

大数据计算技术秘史(上篇)

在之前的文章《2024 年,一个大数据从业者决定……》《存储技术背后的那些事儿》中,我们粗略地回顾了大数据领域的存储技术。在解决了「数据怎么存」之后,下一步就是解决「数据怎么用」的问题。 其实在大数据技术兴起之前,对于用户…

react实现拖拽的插件

插件一:dnd-kit 插件官网链接https://docs.dndkit.com/introduction/installation 插件二:react-beautiful-dnd https://github.com/atlassian/react-beautiful-dnd/tree/master 两个插件的区别: 插件一可以做到从区域A拖住到区域B 插件二…

平台组成-门户服务

整体是从用户视角,从外往内介绍。前面讲了平台的几个模块(就是前端部署包)。今天开始介绍后台服务(微服务,SpringCloud,通过-jar 参数启动的jar包)。 门户服务完成登录、注册、界面配置、功能链…

java面试JVM虚拟机篇

1 JVM组成 1.1 JVM由那些部分组成,运行流程是什么? 难易程度:☆☆☆ 出现频率:☆☆☆☆ JVM是什么 Java Virtual Machine Java程序的运行环境(java二进制字节码的运行环境) 好处: 一次编写&a…

Go 原子操作有哪些?

Go atomic包是最轻量级的锁(也称无锁结构),可以在不形成临界区和创建互斥量的情况下完成并发安全的值替换操作,不过这个包只支持int32/int64/uint32/uint64/uintptr这几种数据类型的一些基础操作(增减、交换、载入、存…

Excel之index、MATCH面试题、VLOOKUP函数,

VLOOKUP() 在表格的首列查找指定的数值,并返回表格当前行中指定列处的数值。 结构:VLOOKUP(查找值,查找区域,列序数,匹配条件) 解释:VLOOKUP(找谁,在哪里找,第几列,0或1) 1.目的:根据【产品】查找【销量】 公式:V…

pikachu靶场-XSS

XSS: XSS(跨站脚本)概述 Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型: 1.反射性XSS; 2.存储型XSS; 3.DOM型XSS; …

QT的UI入门

二、UI入门 QWidget类(熟悉) QWidget类是所有组件和窗口的基类,内部包含了一些基础的界面特性。 常用属性: 修改坐标 x : const int 横坐标,每个图形的左上角为定位点,横轴的零点在屏幕的最左边&#xff0c…

js实现复制功能

一、具体场景 前端有时需要实现点击按钮复制的功能,这个时候就不能让用户去手动选择内容右键复制了。 二、实现方式 1. document.execCommand (1)具体实现 复制时,先选中文本,然后调用document.execCommand(‘copy’)…

171基于matlab的随机共振微弱信号检测

基于matlab的随机共振微弱信号检测,随机共振描述了过阻尼布朗粒子受周期性信号和随机噪声的共同作用下,在非线性双稳态系统中所发生的跃迁现象. 随机共振可用于弱信号的检测。程序已调通,可直接运行。

共享之力:分布式计算的奇迹

在信息时代的浪潮中,分布式计算作为一种革命性的技术,已经深刻地改变了我们对计算和数据处理的理解方式。其发展历程既是一段精彩的科技史,也是一段充满探索与突破的冒险故事,从最初的概念探索到如今的普及应用,分布式…

HashMap 源码学习-jdk1.8

1、一些常量的定义 这里针对MIN_TREEIFY_CAPACITY 这个值进行解释一下。 java8里面,HashMap 的数据结构是数组 (链表或者红黑树),每个数组节点下可能会存在链表和红黑树之间的转换,当同一个索引下面的节点超过8个时…

【Webpack】处理字体图标和音视频资源

处理字体图标资源 1. 下载字体图标文件 打开阿里巴巴矢量图标库open in new window选择想要的图标添加到购物车,统一下载到本地 2. 添加字体图标资源 src/fonts/iconfont.ttf src/fonts/iconfont.woff src/fonts/iconfont.woff2 src/css/iconfont.css 注意字体…

[计算机网络]---TCP协议

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一 、TCP协…

Java并发基础:原子类之AtomicBoolean全面解析

本文概要 AtomicBoolean类优点在于能够确保布尔值在多线程环境下的原子性操作,避免了繁琐的同步措施,它提供了高效的非阻塞算法实现,可以大大提成程序的并发性能,AtomicBoolean的API设计非常简单易用。 AtomicBoolean核心概念 …

P1024 [NOIP2001 提高组] 一元三次方程求解

P1024 [NOIP2001 提高组] 一元三次方程求解 纯代码记录 #include <iostream> #include <math.h> using namespace std; double a,b,c,d; double res[3];//用于存放三个解 int resCount;inline double F(double x)//三次函数 {return a*pow(x,3)b*pow(x,2)c*xd; }//…

web前端开发this指向问题

❗ 函数内部中的 this 指向谁&#xff0c;不是在函数定义时决定的&#xff0c;而是在函数第一次调用并执行的时候决定的 1. call 方法 语法&#xff1a;函数名.call(调用者, 参数1, …) 作用&#xff1a;函数被借用时&#xff0c;会立即执行&#xff0c;并且函数体内的this会…

Facebook Horizon:探索虚拟现实中的社交空间

随着科技的不断进步&#xff0c;虚拟现实&#xff08;VR&#xff09;技术正成为社交互动和娱乐体验的新前沿。在这个数字时代&#xff0c;Facebook作为全球最大的社交媒体平台之一&#xff0c;正在引领虚拟社交的新时代&#xff0c;其推出的虚拟社交平台Facebook Horizon成为了…

Tomcat线程池原理(下篇:工作原理)

文章目录 前言正文一、执行线程的基本流程1.1 JUC中的线程池执行线程1.2 Tomcat 中线程池执行线程 二、被改造的阻塞队列2.1 TaskQueue的 offer(...)2.2 TaskQueue的 force(...) 三、总结 前言 Tomcat 线程池&#xff0c;是依据 JUC 中的线程池 ThreadPoolExecutor 重新自定义…