当前位置: 首页 > news >正文

代码规范和简化标准

代码规范和简化标准是编写高质量、可维护、可扩展和可读代码的基本原则。遵循这些标准不仅能提高团队协作效率,还能减少出错的概率和后期维护的成本。以下是一些常见的代码规范和简化标准:

1. 命名规范

  • 变量命名:

    • 使用具有描述性的名称,确保代码能清晰传达意图。
    • 使用小写字母和驼峰命名法(camelCase),例如 userNametotalAmount
    • 常量使用全大写字母和下划线分隔(UPPER_SNAKE_CASE),例如 MAX_COUNTPI.
    • 避免使用单个字母或无意义的缩写,除非是常见的标准缩写(如 idURLAPI)。
  • 函数/方法命名:

    • 函数名应使用动词并且清晰地描述其功能,如 getData()calculateTotal()fetchUserInfo()
    • 避免使用过长或模糊的函数名。
  • 类名/模块命名:

    • 类名应使用大写字母开头的驼峰式命名(PascalCase),例如 UserProfileDatabaseConnection
    • 模块名或文件名应尽量简短并且与功能相关。

2. 缩进和格式化

  • 使用一致的缩进方式,常见的是 2个空格 或 4个空格,避免混合使用空格和制表符(Tab)。
  • 保持代码行长度不超过 80-120 个字符,避免出现超长行,使得代码更易于阅读。
  • 在代码块之间添加适当的空行,以增加可读性。例如,在函数之间、类之间或逻辑块之间添加空行。

3. 注释规范

  • 注释的重要性:代码本身应该尽可能清晰,注释仅用于解释复杂、晦涩或不直观的部分。避免过多冗余的注释。
  • 函数/方法注释:注释应描述函数的目的、参数、返回值、边界条件和任何副作用
  • 避免注释代码:不应保留注释掉的代码,应删除不再使用的代码块。

4. 代码结构

  • 单一职责原则(SRP,Single Responsibility Principle):每个函数或类应有且仅有一个责任,确保每个模块或函数执行一个特定的任务。
  • 函数长度:函数应尽量保持简短,通常一个函数不超过 20 行代码,除非功能复杂或必须合并。
  • 避免嵌套过深:嵌套超过三层的代码往往难以理解和维护,可以考虑将复杂的逻辑提取到单独的函数中。

5. 逻辑简化

  • 避免重复代码(DRY原则):不要重复相同的代码,尝试将重复逻辑提取成函数或类,减少冗余。
  • 使用合适的数据结构:选择合适的集合类型(如数组、列表、字典、集合等),避免不必要的循环或计算。
  • 早返回:对于条件判断,尽量使用早期返回,避免过多嵌套

6. 可读性和一致性

  • 一致性:团队内的代码风格应保持一致。可以使用工具(如 ESLint、Prettier、Pylint 等)自动检查代码风格。
  • 遵循行业标准和框架规范:如使用 Airbnb 的 JavaScript 风格指南,Python PEP 8 等,以确保代码符合普遍接受的最佳实践。

7. 性能优化

  • 避免过度优化:过早优化会让代码变得复杂,只有在性能成为瓶颈时才进行优化。
  • 避免不必要的计算:避免在循环或频繁调用的地方进行重复计算。
  • 懒加载和缓存:在适当的地方使用懒加载和缓存机制来优化性能。

8. 安全性

  • 避免硬编码:如密码、API 密钥等敏感信息应存放在安全的地方(如环境变量、配置文件等),而不是硬编码在源代码中。
  • 输入验证:对用户输入进行验证,防止 SQL 注入、跨站脚本(XSS)等安全问题。
  • 防止资源泄漏:如文件、数据库连接等应当在使用后关闭,避免内存泄漏或资源占用。

9. 版本控制规范

  • 提交信息规范:每次提交应描述做了什么修改,且简洁明了。常见的提交信息格式:
    • feat: 新增功能
    • fix: 修复 bug
    • docs: 文档更新
    • refactor: 代码重构
    • style: 格式修改,不影响代码逻辑
    • test: 增加或修改测试
  • 频繁提交:不要在开发中等待很久才提交,保持提交的频率,有助于回溯和问题定位。

10. 测试和覆盖率

  • 编写单元测试:每个函数或模块应该有对应的单元测试,确保代码的功能正确。
  • 测试覆盖率:尽量确保较高的代码覆盖率,通常代码覆盖率应不低于 80%,但不必追求 100% 完全覆盖。

总结

良好的代码规范和简化标准能够帮助开发者编写更易于维护、更易于扩展、更安全、可读性更高的代码。遵循行业最佳实践,使用一致的命名规范、清晰的注释、合理的代码结构和简化复杂逻辑,将使团队能够更高效地协作,减少错误和bug的出现,提高开发效率。

相关文章:

代码规范和简化标准

代码规范和简化标准是编写高质量、可维护、可扩展和可读代码的基本原则。遵循这些标准不仅能提高团队协作效率,还能减少出错的概率和后期维护的成本。以下是一些常见的代码规范和简化标准: 1. 命名规范 变量命名: 使用具有描述性的名称&…...

DeepSeek安全:AI网络安全评估与防护策略

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 本文基于现有的公开资料,从企业资深网络安全专家的视角,系统梳理DeepSeek技术在网络安全领域的潜在贡献与核心风险,并结合中国…...

开发环境搭建-05.后端环境搭建-前后端联调-通过断点调试熟悉项目代码特点

一.后端环境搭建-前后端联调 首先进行编译,编译通过才能够正常运行,我们可以看到已成功编译通过。 SkyApplication启动成功 登录成功 二.登录操作 1.controller层 package com.sky.controller.admin;import com.sky.constant.JwtClaimsConstant; impo…...

python py文件转为可执行文件(.exe)与 exe文件转py文件

一、py文件转为可执行文件(.exe) #安装 PyInstaller库 pip install pyinstaller #将 Python 脚本打包成一个单一的可执行文件。 pyinstaller --onefile .\123.py 文件或 pyinstaller -F .\123.py 文件 执行这个命令后,PyInstaller 会将123…...

【慕课网wiki项目学习笔记01】Spring Boot 项目搭建

2-2 新建SpringBoot项目 一、创建SpringBoot项目 (1)在SpringBoot官网创建 (2.1)在 IDEA 中创建 Group:公司名 Artifact:项目名 创建成功后开始下载Maven依赖(选择右下角的Import Changes&…...

解锁数据潜能,永洪科技以数据之力简化中粮可口可乐决策之路

企业数字化转型是指企业利用数字技术和信息通信技术来改变自身的商业模式、流程和增值服务,以提高企业的竞争力和创新能力。数字化转型已经成为企业发展的重要战略,尤其在当前信息技术高速发展的时代。数字化转型还涉及到企业与消费者之间的互动和沟通。…...

k-Shape:高效准确的聚类方法

引言 时间数据在许多学科中的扩散和无处不在,已经对时间序列的分析和挖掘产生了极大的兴趣。聚类是最流行的数据挖掘方法之一,不仅因为它的探索性,而且作为其他技术的预处理步骤或子程序。常用的有-means聚类算法。本文介绍了一种新的时间序…...

前端网络安全面试题及答案

前端计算机网络常见面试题目总结_笔描相思的博客_前端计算机网络面试 1.TCP、UDP的区别 ①TCP是有连接的,连接需要三次握手,断开连接需要四次挥手;UDP是无连接的 ②TCP是面向报文的,UDP是面向字节流的 ③TCP是可靠的&#xff…...

9. Flink的性能优化

1. Flink的资源和代码优化 1.1 slot资源配置 Flink中具体跑任务的进程叫TaskManager,TM进程又会根据配置划分出诺干个TaskSlot,它是具体运行SubTask的地方。slot是Flink用来隔离各个subtask的资源集合,这里的资源一把指内存,TCP…...

DeepSeek安装部署笔记(二)

Bat批处理文件的编写 第五步 启动openWebUI的批处理编写1、下面的代码,复制到文本文件,再改扩展名2、这样,在桌面直接双击此文件运行 第五步 启动openWebUI的批处理编写 1、下面的代码,复制到文本文件,再改扩展名 ec…...

【谷粒商城踩坑记】第二坑 renren-fast-vue的node-sass问题

第二坑 renren-fast-vue的node-sass问题 前端开始,第一关就是源码运行,直接报错以下内容: node-sass6.0.1 postinstall: node scripts/build.js 这个在老的前端项目中,特别是使用了sass的项目中经常会出现。 其实当时没有记录下具…...

【Linux-网络】HTTP的清风与HTTPS的密语

🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚 引言 📚 一、HTTP 📖 1.概述 📖 2.URL &#x1f5…...

【SpringBoot】数据访问技术spring Data、 JDBC、MyBatis、JSR-303校验

Spring Boot 数据访问技术及特性 目录标题 Spring Boot 数据访问技术及特性摘要1. 引言2. Spring Data架构与原理2.1 Spring Data概述2.2 Spring Data核心组件2.3 Spring Boot与Spring Data的集成机制 3. Spring Boot与JDBC的整合3.1 JDBC整合流程3.2 数据源自动配置3.3 JdbcTe…...

直装永久授权,最新专业版集成VB7

无论是学生、教师还是职场工作人员,办公软件在日常工作和学习中都是不可或缺的重要工具。在众多办公软件中,微软的Microsoft Office和金山软件的WPS Office最常用的选择。对于许多使用要求不高的小伙伴而言,WPS Office因其易用性和免费版本的…...

Ollama 框架本地部署教程:开源定制,为AI 项目打造专属解决方案!

Ollama 是一款开源的本地大语言模型(LLM)运行框架,用于管理和运行语言模型。具有以下核心特点: 开源可定制:采用 MIT 开源协议,开发者能自由使用、阅读源码并定制,可根据自身需求进行功能扩展和…...

【单片机项目】电源如何扩展、电源模块、电池模块如何接线

一、前言 解决2个关键问题: 【1】如果项目编号小于172之前的项目。 可能会遇到电源模块不够接,需要扩展电源的问题。 【2】如果项目编号是大于 172之后项目,部分项目用到了稳压电源模块或者是电池模块。 这篇文章单独讲解一下如何接线。 …...

汽车智能钥匙中PKE低频天线的作用

PKE(Passive Keyless Entry)即被动式无钥匙进入系统,汽车智能钥匙中PKE低频天线在现代汽车的智能功能和安全保障方面发挥着关键作用,以下是其具体作用: 信号交互与身份认证 低频信号接收:当车主靠近车辆时…...

mongodb安装教程以及mongodb的使用

MongoDB是由C语言编写的一种面向文档的NoSQL数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。与传统的关系型数据库(如 MySQL 或 PostgreSQL)不同,MongoDB 存储数据的方式是以 BSON(类似于 JSON 的二进制格式…...

SpringMVC学习(controller层加载控制与(业务、功能)bean加载控制、Web容器初始化配置类)(3)

目录 一、SpringMVC、Spring的bean加载控制。 &#xff08;1&#xff09;实际开发的包结构层次。 &#xff08;2&#xff09;如何"精准"控制两个容器分别加载各自bean。(分析) <1>SpringMVC相关bean加载控制。(方法) <2>Spring相关bean加载控制。(方法) …...

redis基础结构

title: redis基础结构 date: 2025-03-04 08:39:12 tags: redis categories: redis笔记 Redis入门 &#xff08;NoSQL, Not Only SQL&#xff09; 非关系型数据库 关系型数据库&#xff1a;以 表格 的形式存在&#xff0c;以 行和列 的形式存取数据&#xff0c;一系列的行和列被…...

树莓派学习(一)——3B+环境配置与多用户管理及编程实践

树莓派学习&#xff08;一&#xff09;——3B环境配置与多用户管理及编程实践 一、实验目的 掌握树莓派3B无显示器安装与配置方法。学习Linux系统下多用户账号的创建与管理。熟悉在树莓派上使用C语言和Python3编写简单程序的方法。 二、实验环境 硬件设备&#xff1a;树莓派…...

【音视频】ffplay播放控制

一、ffplay播放控制 1.1、ffplay打开视频 比如我当前目录下现在有一个1.mp4的视频&#xff0c;可以使用下面的命令用ffplay打开并播放它 ffplay 1.mp4输入后回车即可打开相应的视频 1.2 ffplay播放控制 使用q、ESC退出播放按f、双击切换全屏状态按m切换为静音按9减少音量&a…...

【智能体Agent】ReAct智能体的实现思路和关键技术

基于ReAct&#xff08;Reasoning Acting&#xff09;框架的自主智能体 import re from typing import List, Tuplefrom langchain_community.chat_message_histories.in_memory import ChatMessageHistory from langchain_core.language_models.chat_models import BaseChatM…...

Redis系列之慢查询分析与调优

Redis 慢查询分析与优化&#xff1a;提升性能的实战指南 Redis 作为一款高性能的内存数据库&#xff0c;因其快速的数据读写能力和灵活的数据结构&#xff0c;被广泛应用于缓存、消息队列、排行榜等多种业务场景。然而&#xff0c;随着业务规模的扩大和数据量的增加&#xff0…...

分布式锁—2.Redisson的可重入锁一

大纲 1.Redisson可重入锁RedissonLock概述 2.可重入锁源码之创建RedissonClient实例 3.可重入锁源码之lua脚本加锁逻辑 4.可重入锁源码之WatchDog维持加锁逻辑 5.可重入锁源码之可重入加锁逻辑 6.可重入锁源码之锁的互斥阻塞逻辑 7.可重入锁源码之释放锁逻辑 8.可重入锁…...

大模型巅峰对决:DeepSeek vs GPT-4/Claude/PaLM-2 全面对比与核心差异揭秘

文章目录 一、架构设计深度解剖1.1 核心架构对比图谱1.2 动态MoE架构实现架构差异分析表 二、训练策略全面对比2.1 训练数据工程对比2.2 分布式训练代码对比DeepSeek混合并行实现GPT-4 Megatron实现对比 2.3 关键训练参数对比 三、性能表现多维评测3.1 基准测试全景对比3.2 推理…...

解决各大浏览器中http地址无权限调用麦克风摄像头问题(包括谷歌,Edge,360,火狐)后续会陆续补充

项目场景&#xff1a; 在各大浏览器中http地址调用电脑麦克风摄像头会没有权限&#xff0c;http协议无法使用多媒体设备 原因分析&#xff1a; 为了用户的隐私安全&#xff0c;http协议无法使用多媒体设备。因为像摄像头和麦克风属于可能涉及重大隐私问题的API&#xff0c;ge…...

Linux - 网络套接字

一、网络编程 1&#xff09;地址结构 1. IP地址结构 struct in_addr&#xff1a;是用于表示 IPv4 地址 的结构体&#xff0c;定义在头文件 <netinet/in.h> 中。它的主要作用是存储一个 32 位的 IPv4 地址&#xff0c;通常与 struct sockaddr_in 一起使用。 struct in_a…...

Oracle数据库监听学习

官方文档&#xff1a; Net Services Administrators Guide Net Services Reference 一、动态注册 1.实例启动后&#xff0c;LREG 进程每分钟自动将服务名&#xff08;service_name&#xff09;注册到监听器中 也可以通过 alter system register 命令实现立刻注册。&#x…...

利率债、信用债、可转债区别与优势

利率债、信用债、城投债和可转债是债券市场的主要品种&#xff0c;它们在发行主体、风险收益特征和投资优势上各有不同。以下是它们的区别和优势&#xff1a; 1. 利率债 定义&#xff1a;利率债是由政府或政府支持的机构发行的债券&#xff0c;主要包括国债、政策性金融债&…...

C语言番外篇(4)------------------>VS环境下源码的隐藏

假设你是一个优秀的程序员&#xff0c;开发了一款功能十分强大的计算器。现在有一家做计算器的公司看上了你的功能&#xff0c;想通过每一年给你几万块钱使用这个功能。那我们是只提供一个头文件和静态库给他们使用这个功能就行呢&#xff1f;还是连同源代码一起给这家公司呢&a…...

Java集合

写在前面 本人在学习JUC过程中学习到集合和并发时有许多稀碎知识点 需要总结梳理思路与知识点 本文内容会涉及到ArrayList&#xff0c;HashMap以及扩容机制&#xff0c;ConcurrentHashMap&#xff0c;Synchronized&#xff0c;Volatile&#xff0c;ReentrantLock&#xff0c;…...

el-input 设置类型为number时,输入中文后光标会上移,并且会出现上下箭头

光标上移 设置 el-input 的 typenumber后&#xff0c;只能输入数字&#xff0c;输入中文后会自动清空&#xff0c;但是会出现一个问题&#xff1a;【光标会上移&#xff0c;如下图】 解决方法&#xff1a;修改样式 注意&#xff1a;需要使用样式穿透 :deep( ) /*解决el-in…...

迷你世界脚本自定义UI接口:Customui

自定义UI接口&#xff1a;Customui 彼得兔 更新时间: 2024-11-07 15:12:42 具体函数名及描述如下:&#xff08;除前两个&#xff0c;其余的目前只能在UI编辑器内部的脚本使用&#xff09; 序号 函数名 函数描述 1 openUIView(...) 打开一个UI界面&#xff08;注意…...

解决windows npm无法下载electron包的问题

1.将nsis.zip解压到C:\Users\XXX\AppData\Local\electron-builder\Cache 2.将winCodeSign.zip解压到C:\Users\XXX\AppData\Local\electron-builder\Cache 3.将electron-v20.3.8-win32-ia32.zip复制到C:\Users\XXX\AppData\Local\electron\Cache 4.将electron-v20.3.8-win32-…...

Notepad++ 8.6.7 安装与配置全攻略(Windows平台)

一、软件定位与核心优势 Notepad 是开源免费的代码/文本编辑器&#xff0c;支持超过80种编程语言的高亮显示&#xff0c;相比系统自带记事本具有以下优势&#xff1a; 轻量高效&#xff1a;启动速度比同类软件快30%插件扩展&#xff1a;支持NppExec、JSON Viewer等200插件跨文…...

Unity InputField + ScrollRect实现微信聊天输入框功能

1、实现动态高度尺寸的的InputField 通过这两个部件就可以实现inputField的动态改变尺寸。 将inputField放入到scrollview当中作为子类 将scrollview 链接到UIChatInputField脚本中。 2、实现UIChatInputField //聊天输入框&#xff08;类似wechat&#xff09; [RequireComp…...

Java-servlet(三)Java-servlet-Web环境搭建(下)详细讲解利用maven和tomcat搭建Java-servlet环境

Java-servlet&#xff08;三&#xff09;Java-servlet-Web环境搭建&#xff08;下&#xff09;利用maven和tomcat搭建Java-servlet环境 前言一、配置maven阿里镜像二、利用IDEA创建maven文件创建maven文件删除src文件创建新的src模版删除example以及org文件 三、在第二个xml文件…...

在 CLion 中使用 Boost.Test 进行 C++ 单元测试

1. 安装 Boost.Test Boost.Test 是 Boost C 库的一部分&#xff0c;因此需要安装完整的 Boost 库。 方法 1&#xff1a;使用包管理器安装&#xff08;推荐&#xff09; Windows&#xff08;vcpkg&#xff09; 直接使用 CLion 集成的 vcpkg安装 boost-test&#xff1a; 也可…...

极狐GitLab 17.9 正式发布,40+ DevSecOps 重点功能解读【二】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…...

文本处理Bert面试内容整理-BERT的预训练任务是什么?

BERT的预训练任务主要有两个,分别是 Masked Language Model (MLM) 和 Next Sentence Prediction (NSP)。这两个任务帮助BERT学习从大规模未标注文本中提取深层次的语义和上下文信息。 1. Masked Language Model (MLM)(掩码语言模型)...

【蓝桥杯】每天一题,理解逻辑(3/90)【Leetcode 快乐数】

闲话系列&#xff1a;每日一题&#xff0c;秃头有我&#xff0c;Hello&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;,我是IF‘Maxue&#xff0c;欢迎大佬们来参观我写的蓝桥杯系列&#xff0c;我好久没有更新博客了&#xff0c;因为up猪我寒假用自己的劳动换了…...

“深入浅出”系列之Linux篇:(10)基于C++实现分布式网络通信RPC框架

分布式网络通信rpc框架 项目是分布式网络通信rpc框架&#xff0c; 文中提到单机服务器的缺点&#xff1a; 硬件资源的限制影响并发&#xff1a;受限于硬件资源&#xff0c;聊天服务器承受的用户的并发有限 模块的编译部署难&#xff1a;任何模块小的修改&#xff0c;都导致整…...

Python的那些事第四十一篇:简化数据库交互的利器Django ORM

Django ORM:简化数据库交互的利器 摘要 随着互联网技术的飞速发展,Web开发越来越受到重视。Django作为一款流行的Python Web框架,以其高效、安全、可扩展等特点受到了广大开发者的喜爱。其中,Django ORM(对象关系映射)是Django框架的核心组件之一,它为开发者提供了一种…...

[自动驾驶-传感器融合] 多激光雷达的外参标定

文章目录 引言外参标定原理ICP匹配示例参考文献 引言 多激光雷达系统通常用于自动驾驶或机器人&#xff0c;每个雷达的位置和姿态不同&#xff0c;需要将它们的数据统一到同一个坐标系下。多激光雷达外参标定的核心目标是通过计算不同雷达坐标系之间的刚性变换关系&#xff08…...

初学STM32之简单认识IO口配置(学习笔记)

在使用51单片机的时候基本上不需要额外的配置IO&#xff0c;不过在使用特定的IO的时候需要额外的设计外围电路&#xff0c;比如PO口它是没有内置上拉电阻的。因此若想P0输出高电平&#xff0c;它就需要外接上拉电平。&#xff08;当然这不是说它输入不需要上拉电阻&#xff0c;…...

【长安大学】苹果手机/平板自动连接认证CHD-WIFI脚本(快捷指令)

背景&#xff1a; 已经用这个脚本的记得设置Wifi时候&#xff0c;关闭“自动登录” 前几天实在忍受不了CHD-WIFI动不动就断开&#xff0c;一天要重新连接&#xff0c;点登陆好几次。试了下在网上搜有没有CHD-WIFI的自动连接WIFI自动认证脚本&#xff0c;那样我就可以解放双手&…...

powermock,mock使用笔记

介于日本的形式主义junit4单体测试&#xff0c;特记笔记&#xff0c;以下纯用手机打出来&#xff0c;因为电脑禁止复制粘贴。 pom文件 powermock-module-junit1.7.4 powermock-api-mokcito 1.7.4 spring-test 8 1&#xff0c;测试类头部打注解 RunWith(PowerMockRunner.class…...

大模型微调实战指南

1. 引言 在人工智能领域&#xff0c;大模型&#xff08;如GPT、BERT、DeepSeek等&#xff09;已经展现出了强大的通用能力。然而&#xff0c;要让这些模型在特定任务或领域中发挥最佳性能&#xff0c;微调&#xff08;Fine-tuning&#xff09;是必不可少的一步。本文将带你从零…...

计算机毕业设计Python+Django+Vue3微博数据舆情分析平台 微博用户画像系统 微博舆情可视化(源码+ 文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...