代码规范简述
目录
命名规范
代码格式
OOP规约
集合规范
并发规范
SQL语句规范
SQL 建表规范
SQL 索引规范
SQL 查询规范
控制语句规范
Javadoc 规范
其他规范
命名规范
1、包名:使用小写字母,多个单词之间用"."分隔,例如:com.example.mypackage。
2、类名和接口名:使用大驼峰命名法,即每个单词首字母大写,例如:MyClass、MyInterface。
3、方法名:使用小驼峰命名法,即第一个单词小写,后面每个单词首字母大写,例如:myMethod。
4、变量名:同样使用小驼峰命名法,例如:myVariable。
5、常量名:使用大写字母和下划线命名,例如:MY_CONSTANT。
6、参数名:与变量名相同,使用小驼峰命名法。
7、类型参数名:使用单个大写字母,例如:T、E。
8、枚举常量名:常量名全部大写,单词间用下划线隔开,例如:MAX_NUMBER。
注意所有的命名应该对应相应的单词,避免无意义的命名。
代码格式
1、缩进:使用四个空格进行缩进,不要使用制表符。
2、换行:每行代码长度不应超过80个字符。当一行代码过长时,可以通过换行来使其更易读。
3、空格:在二元运算符(如赋值、逻辑运算符等)两侧加上空格,但在一元运算符(如取反运算符)之后不加空格。例如:int result = 1 + 2; 和 if (!flag) { ... }。
4、大括号:在代码块的左大括号前加上一个空格,右大括号独占一行,除非是空代码块。例如:
if (condition) {// 代码
} else {代码
}
5、注释:注释应该清晰明了,简洁准确,且不应与代码格式冲突;注释应该放在需要解释的代码行的上方,或者与代码保持一定的间距。
6、异常处理:每个 try 块都应该有一个对应的 catch 块或者 finally 块。catch 块中应该包含恰当的异常处理代码。
其他:禁止出现代码多行注释,禁止出现无意义的空格,禁止出现行末空格,等等。
OOP规约
1、类命名:类名采用大驼峰命名法,例如:UserInfo;
2、方法命名:方法名采用小驼峰命名法,例如:getUserName();
3、变量命名:变量名采用小驼峰命名法,例如:userName;
封装性:封装性是面向对象编程的核心,要求类的属性和方法要定义为private,只能通过public方法来访问和修改;
继承性:继承性是面向对象编程的重要特性,要求子类和父类之间要保持适当的关系,不应该随意修改父类的属性和方法;
多态性:多态性是面向对象编程的又一重要特性,要求方法的参数类型和返回值类型要尽量使用父类或接口类型,便于扩展和维护。
集合规范
集合在声明后应该立即初始化,避免出现空指针异常;
集合的容量应该在初始化时指定,以提高程序的效率;
集合的类型应该尽量使用泛型,以提高代码的健壮性和可读性;
集合的遍历应该使用迭代器或foreach循环,不应该使用普通的for循环。
并发规范
线程安全:多线程环境下,应该保证程序的线程安全性,防止出现数据竞争和死锁等问题;
同步机制:在需要修改共享变量的地方应该加上同步机制,以保证数据的一致性和完整性;
线程池:在使用多线程时应该使用线程池,以避免线程的创建和销毁带来的性能损失。
SQL语句规范
每条 SQL 语句占一行,避免多条语句写在同一行;
SQL 语句的关键字统一使用大写;
表名、列名等标识符采用小写,多个单词用下划线连接;
SQL 语句中的字面量(如字符串、数字)使用单引号括起来;
注释可以使用双短横线--或 /* */ 表示。
SQL 建表规范
主键、唯一索引、普通索引等都需要命名,名称必须表达清楚索引的含义;
表名应该采用小写字母,单词之间用下划线隔开,例如:user_info;
字段名也应该采用小写字母,单词之间用下划线隔开,例如:user_name;
表字段必须加注释,注释内容应该表达字段的含义、业务含义以及约束条件;
应该根据实际情况选择合适的数据类型,以尽可能地节省存储空间;
不使用保留字作为字段名,以避免出现不必要的错误;
尽量避免使用 MySQL 关键字作为表名或列名,如 select、order 等。
SQL 索引规范
索引字段顺序应该优化,常用的放前面,复合索引优先考虑常用组合;
多表连接的 SQL 语句,应该在关联字段上建立索引,以提高查询效率;
避免在索引列上使用函数操作,如:select * from table where substr(name,1,3)='abc',应改为select * from table where name like 'abc%',以充分利用索引的优势。
注意:索引可以提高查询的效率,但过多的索引会降低。
SQL 查询规范
避免使用 SELECT *,只选择必要的字段;
避免在 WHERE 子句中对索引字段使用不等于操作符,如:where id<>10,这样会导致索引失效;
避免使用子查询或者 JOIN 进行大量数据的计算和查询,尽量减少对数据的扫描。
总之,SQL 语句的书写规范、建表规范、索引规范、查询规范等都可以提高 SQL 的效率,减少错误和异常。在实际开发中,我们应该尽量遵循这些规范,写出高效、安全、易于维护的 SQL 语句。
控制语句规范
1、不能在条件判断中使用复杂的表达式,应该将复杂表达式的结果赋值给一个变量,然后在条件判断中使用变量。
2、在判断 null 值时,应该使用 isnull() 或者 is not null 而不是 = null 或者 != null。
3、switch 语句必须带有 default 分支,并且 default 分支放在最后。
4、使用循环时,应该注意:
在使用 for 循环时,应该尽可能地使用增强型 for 循环来代替传统的 for 循环,以提高代码的可读性和可维护性;
在使用 while 循环时,应该注意循环条件的正确性,避免出现死循环;
对于 do-while 循环,应该尽可能地避免使用,以提高代码的可读性和可维护性。
5、在使用递归时,应该注意递归深度的控制,避免因递归深度过大导致程序崩溃。
6、在使用 switch 语句时,应该注意:
switch 语句中的每个 case 分支都应该使用 break 语句或者 return 语句结束,以避免出现意外的控制流程;
当 switch 语句中的 case 分支较多时,应该使用 break 语句或者 return 语句来明确地结束每个分支;
对于可能出现 null 值的情况,应该使用 switch 语句的 default 分支来处理,以避免出现空指针异常。
Javadoc 规范
【Javadoc规范是Java开发中的一种文档规范,用于生成API文档,提供代码文档化和注释工具。Javadoc注释是一种特殊的Java注释,可以提取类、方法、变量等信息,生成HTML格式的API文档。Javadoc注释以/**开头,以*/结尾,可以用于注释类、方法、变量等元素】
其中包含丰富的标签,可以描述注释的各种属性,例如:
1、@param:用于描述方法参数的名称和说明;
2、@return:用于描述方法返回值的类型和说明;
3、@throws:用于描述方法可能抛出的异常;
4、@see:用于引用其他类、方法或变量;
5、@deprecated:用于标注已经过时的方法或变量。
Javadoc注释不仅可以用于生成API文档,还可以提高代码的可读性和可维护性,方便其他开发人员理解代码和接口。因此,在Java开发中,Javadoc规范是一个非常重要的文档规范。
注意:
对于每个类、接口、方法、字段,都应该写一个对应的Javadoc注释,描述其作用、参数、返回值等信息。
其他规范
异常处理规范:包括异常处理的方式、处理顺序、日志记录等的规范,要求程序要能够正确处理异常,避免出现不必要的错误;
日志规范:包括日志的级别、格式、位置等的规范,要求程序要能够记录必要的日志信息,便于排查和解决问题;
性能规范:包括代码的优化、避免资源浪费、减少网络传输等的规范,要求程序要具有高效性、可伸缩性和可扩展性;
安全规范:包括密码存储、数据加密、SQL注入、XSS攻击等的安全规范,要求程序要能够保证数据的安全性和可靠性;
测试规范:包括单元测试、集成测试等的规范,要求程序要具有可测试性和可维护性。
相关文章:
代码规范简述
目录 命名规范 代码格式 OOP规约 集合规范 并发规范 SQL语句规范 SQL 建表规范 SQL 索引规范 SQL 查询规范 控制语句规范 Javadoc 规范 其他规范 命名规范 1、包名:使用小写字母,多个单词之间用"."分隔,例如ÿ…...
【Java集合框架】篇五:Map接口
1. Map及实现类特点 Map:存储key-value HashMap:线程不安全,效率高,key和value都可以为null,底层使用 数组单向链表红黑树 结构(jdk8)。 LinkedHashMap:是HashMap的子类࿰…...

Typroa安装教程
Markdown 是一种轻量级标记语言,创始人为约翰格鲁伯(John Gruber)。 它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中已有的纯文本标记…...

【MySQL】存储引擎
目录 1.MySQL体系结构 2.存储引擎介绍 3.存储引擎特点 4.存储引擎选择 1.MySQL体系结构 MySQL整体的逻辑结构可以分为4层,客户层、服务层、存储引擎层、数据层 客户层 客户层:进行相关的连接处理、权限控制、安全处理等操作 服务层 服务层负责与客户层进行连接处理、处…...

芯驰(E3-gateway)开发板环境搭建以及调试遇到问题的解决
1-Windows下环境配置 可以在Windows上使用命令行或者IAR IDE编译SSDK项目。Windows编译依赖的工具已经包含在 prebuilts/windows 目录中,包括编译器、Python和命令行工具。 1.1.1 CMD SSDK集成 msys 工具,可以在Windows命令行中完成SDK的配置、编译和…...

【大数据监控】Prometheus、Node_exporter、Graphite_exporter安装部署详细文档
目录Prometheus简介下载软件包安装部署创建用户创建Systemd服务修改配置文件prometheus.yml启动Prometheusnode exporter下载软件包安装部署添加用户创建systemd服务启动node_exportergraphite_exporter下载软件包安装部署创建systemd服务启动 graphite_exporterPrometheus 简介…...

《C++ Primer》 第十一章 关联容器
《C Primer》 第十一章 关联容器 11.1 使用关联容器 使用map: //统计每个单词在输入中出现的次数 map<string, size_t> word_count;//string到size_t的空map string word; while(cin>>word)word_count[word];//提取word的计数器并将其加1 for(const auto &w:…...

WebRTC标准与框架解读(1)
1、如果让我来设计webrtc框架我在分析源码的时候,都喜欢做这样一件事情:如果让我来设计它,我会怎么做?大家可以紧跟我的思路,分析一下WebRTC为什么如此设计。为了对整个框架有有一个全面的了解,我们首先要做…...

数据结构的一些基础概念
一 基本术语 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。 数据元素:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处…...

【Python每日一练】总目录(不断更新中...)
Python 2023.03 20230303 1. 两数之和 ★ 2. 组合总和 ★★ 3. 相同的树 ★★ 20230302 1. 字符串统计 2. 合并两个有序链表 3. 下一个排列 20230301 1. 只出现一次的数字 2. 以特殊格式处理连续增加的数字 3. 最短回文串 Python 2023.02 20230228 1. 螺旋矩阵 …...
latex插入图片(自用)
加入宏包:\usepackage{graphicx} 使用 \includegraphics 命令进行插图。 \includegraphics[]{}: 第一参数[]:对图片做一些适当的调整(设定图片的高度和宽度或者按比例缩放) 第二参数{}:图片的名字…...

【微信小程序】-- 网络数据请求(十九)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...
K8S 实用工具之一 - 如何合并多个 kubeconfig?
开篇 📜 引言: 磨刀不误砍柴工工欲善其事必先利其器 K8S 集群规模,有的公司倾向于少量大规模 K8S 集群,也有的公司会倾向于大量小规模的 K8S 集群。 如果是第二种情况,是否有一个简单的 kubectl 命令来获取一个 kubec…...

阿里云ECS服务器的6大功能组件
阿里的云服务在国内可以说是首屈一指的了,因此他们家的云服务器也是最受欢迎的。那么,你知道阿里云服务器ECS有哪些功能组件吗?不清楚不要紧,下面服务器吧小编带大家来看看。 在了解之前我们来看一张阿里云服务器ECS的产品组件架…...

外贸建站多少钱?不同预算对应的建站方案!
外贸建站多少钱? 答案是:3000左右。 作为一个外贸企业的经营者,我们深知一个优质的外贸网站对于企业的重要性。 然而,建立一个优质的外贸网站需要耗费大量的时间和资金,因此我们需要在预算有限的情况下,…...

Vue3中hook的使用及使用中遇到的坑
目录前言一,什么是hook二, hook函数的使用2.1 铺垫2.2 hook函数的写法2.3 使用写好的hook函数后记前言 在学习Es6的时候,我们开始使用类与对象,开始模块化管理;在Vue中我们可以使用mixin进行模块化管理;Vu…...
数据库-差集交集并集
数据库-差集交集并集[toc]图示一、并集运算(UNION)并集:两个集合的并集是一个包含集合A和B中所有元素的集合。在T-SQL中,UNION集合运算可以将两个输入查询的结果组合成一个结果集。需要注意的是:如果一个行在任何一个输…...
spark性能调优(四):网络
网络 一、数据读写二、数据处理三、数据传输在平衡不同硬件资源的时候,相比于CPU、内存、磁盘,网络开销处理延迟最高 一、数据读写 对于大多数应用来说,第一步都是从分布式系统中读取数据,不论什么文件格式,也不管哪种文件存储系统,访问数据源是否会引入网络开销,取决于任务与…...

高性能 WPF 图表控件LightningChart.NET:支持从 Web 服务器获取数据 | 附最新版试用下载
LightningChart.NET 是一款高性能 WPF 和 Winforms 图表,可以实时可视化多达1万亿个数据点。可有效利用CPU和内存资源,实时监控数据流。同时,LightningChart使用突破性创新技术,以实时优化为前提,大大提升了实时渲染的效率和效果&…...

文科女生月入14k背后:转行IT软件测试不是谁都学得来!
转行软件测试背后,或许每个人都有自己的无奈。就拿今天要和大家分享的这位小姐姐来说吧,如果不是万不得已,又怎么会狠下心来转行到IT互联网? 应届生逃避就业,考研失败 和大多数人一样,小姐姐的大学生活过得…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...