代码规范书写说明

news2024/9/17 7:51:10

目录

一,命名风格

二、常量定义

三、代码格式


一,命名风格

(1)、不能够以下划线或者美元符号开始,也不能以下划线或者美元符号结束

        反例: _name / __name / $name / name_
(2)、 所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式
        反例: DaZhePronotion/ 打折
(3)、 代码和注释中都要避免使用任何语言的种族歧视性词语
        栗子: 日本/RIBENGUIZI
(4)、 类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / DTO 
(5)、 方法名,参数名,成员变量,局部变量都统一使用 lowerCamelCase 风格
(6)、 常量命名全部大写,单词间用下划线隔开,不要嫌名字太长
(7)、 抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类
命名以它要测试的类的名称开始,以 Test 结尾
(8)、 类型与中括号紧密相连来表示数组。
(9)、POJO类中的任何布尔类型的变量,都不要加is前缀,否则部分框架解析会引起序列化错误
(10)、包名统一使用小写,点分隔符之间有且仅有一个自然语句的英语单词。包名统一使用单数形式,但是类名有复数含义,类名可以使用复数形式。
正例:应用工具类包名为 com.alibaba.ei.kunlun.aap.util、类名为 MessageUtils(此规则参考 spring 的 框架结构)
(11)、避免在子父类的成员变量之间、或者不同代码块的局部变量之间采用完全相同的命名, 使可理解性降低。
如下图:

 

(12)、杜绝完全不规范的缩写,避免望文不知义

                反例:Function 缩写”成 Fu

二、常量定义

(1)、不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。

(2)、在 long 或者 Long 赋值时,数值后使用大写字母 L,不能是小写字母 l

                栗子:Long a = 2l  写的是21还是Long类型的2

三、代码格式

(1)、如果是大括号内为空,则简洁地写成{}即可

(2)、如果大括号内非空,则遵循一下守则:

                1) 左大括号前不换行

                2) 左大括号后换行

                3) 右大括号前换行

                4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必换行

(3)、左小括号和右边相邻字符之间不出现空格;右小括号和左边相邻字符之间也不出现空格;而左大括号前要加空格

        一个栗子:if(空格a==b空格)

(4)、if/for/while/switch/do 等保留字与括号之间都必须加空格。

(5)、采用四个空格缩进,禁止使用tab字符

(6)、注释的双斜线与注释内容之间有且仅有一个空格

(7)、在进行类型强制转换时,右括号与强制转换值之间不需要任何空格隔开

(8)、任何二目、三目运算符的左右都需要加一个空格

                二目:a = b  一目:a=1

(9)、单行字符数限制不超过 120 个,超出需要换行,换行时遵循如下原则:

              1)第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进  

              2)运算符与下文一起换行

              3)方法调用的点符号与下文一起换行

              4)方法调用中的多个参数஬要换行时,在逗号后进行

              5)在括号前不要换行

(10)、方法参数在定义和传入时,多个参数逗号后面必须加入空格

(11)、IDE 的 text file encoding 设置为 UTF-8; IDE 中文件的换行符使用 Unix 格式,不要 使用 Windows 格式

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

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

相关文章

春招进行时:“211文科硕士吐槽工资5500” HR:行情和能力决定价值

学历重要,还是能力重要? 春招进行时,不少学生求职遇冷,会把原因归结为学历水平不够高、毕业院校不够档次、专业不够热门、非一线城市就业机会少等等。 直到上海一位211大学的文科男硕士,吐槽招聘会提供的岗位薪资待遇…

10个实用技巧:如何让你的外贸独立站排名直线上升

在当今竞争激烈的互联网市场中,谷歌SEO已经成为了外贸独立站排名提升的必修课程。为了使得自己的网站能够在谷歌上排名更高,网站优化的工作显得尤为重要。 在这篇文章中,我们将分享10个实用技巧,帮助你的外贸独立站排名直线上升。…

【软件测试】接口测试总结

本文主要分为两个部分: 第一部分:主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两者之前的区别与联系。但该部分只交代了怎么做和如何做?并没有解释为什么要做? 第二部分&#xff1…

java虚拟机栈解读

虚拟机栈出现的背景 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更…

【微信小程序-原生开发】实用教程11 - 用户登录鉴权(含云函数的创建、删除、使用,通过云函数获取用户的openid)

此篇可在实用教程10(见下方链接)的基础上继续开发,也可以在任何微信小程序中直接使用。 https://blog.csdn.net/weixin_41192489/article/details/128835069 用户登录鉴权逻辑 核心技术:通过云函数获取用户的openid 要想使用云函数…

网络层IP协议与数据链路层以太网协议

文章目录一、IP协议IP地址地址管理路由选择DNS二、以太网协议以太网帧MTU一、IP协议 IP协议是我们网络层的代表协议,今天我们就来一起学习一下吧,我们这里介绍的主要是IPv4协议。 版本:指定IP协议的版本,版本的取值只有4&#x…

如何使用ExchangeFinder在给定域中寻找Microsoft Exchange实例

关于ExchangeFinder ExchangeFinder是一款功能强大且使用简单的开源工具,该工具能够在给定域中尝试搜索指定的Microsoft Exchange实例,该工具的搜索机制基于Microsoft Exchange的常见DNS名称实现,并且能够识别指定的Microsoft Exchange版本&…

java基础之异常总结(自问自答版本)

1.errors和exception的区别是什么? 二者都是JAVA异常处理的重要子类,各自都包含大量子类 区别: exception:程序本身可以处理的异常,可以通过catch来进行捕获,遇到这种错误,应对其进行处理,使应用程序可以继…

大数据技术之Canal入门篇

大数据技术之Canal入门篇 文章目录大数据技术之Canal入门篇写在前面第 1 章 Canal 入门1.1 什么是 Canal1.2 MySQL 的Binlog1.2.1 什么是 Binlog1.2.2 Binlog 的分类1.3 Canal 的工作原理1.3.1 MySQL 主从复制过程1.3.2 Canal 的工作原理1.4 使用场景第 2 章 MySQL 的准备2.1 创…

作为产品经理,你都是怎样思考问题的?

作为产品经理,我们既不是产品的业务员更不是原型画师,而是伟大的创造者。用户对一个产品的评价可能只有好与坏,而作为产品工作者的我们必须有自己思考产品的视角,透过表现洞察本质。笔者根据自己有限的用户研究与产品设计的工作经…

leetcode_回溯算法

回溯算法刷题总结回溯法理论基础回溯算法的模板组合问题77.组合优化版本216.组合总和III17.电话号码的字母组合组合总和组合总和II分割131.分割回文串93.复原IP地址子集78.子集90.子集II491.递增子序列(和子集问题很像)排列全排列全排列II其他问题332.重…

RK3568平台开发系列讲解(Linux系统篇)伪文件系统目录详细介绍

🚀返回专栏总目录 文章目录 一、procfs文件系统二、sysfs文件系统沉淀、分享、成长,让自己和他人都能有所收获!😄 📢除了专门用于存储设备记录文件的文 件系统外,Linux 内核还提供了procfs、sysfs 等伪文件系统。 伪文件系统存在于内存中,通常不占用硬盘空间,它以文…

QML 键盘事件

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 和鼠标一样,键盘同样也提供了用户交互的能力,所以在介绍完《QML 鼠标事件》之后,是时候深入键盘事件了。 在 QML 中,有一个附加属性 - Keys,是专供可视元素进行按键处理的。当用户按下或释放一个按键时…

DDD:统一语言

目录一、统一语言的作用阐述二、统一语言与领域分析2.1、统一的领域术语2.2、统一的领域行为描述三、统一语言落地执行一、统一语言的作用阐述 【统一语言】,怎么强调都不为过!! 日常沟通中,时常会出现这么一幕:A同学…

第四章 reactive对象的简单实现以及reactive的依赖收集和触发依赖

reactive对象的简单实现 主要通过reactive.spec.ts这个测试案例来实现功能 import { reactive } from "../reactive"describe(reactive,()>{it(happy path,()>{const original {foo:1}const observed reactive(original)expect(observed).not.toBe(origina…

Unity常见面试题详解(持续更新...)

一丶声明、定义、实例化、初始化 1、首先我们来讨论在C/C中的声明和定义.. 1)我们先从函数声明和定义说起... 一般我们在C里都会先定义一个函数,然后再Main函数前将函数声明,比如: //函数声明 int Add(int);int Main {} //函数…

tmux终端复用软件

一、安装[rootpool-100-1-1-159 test]# yum install tmux [rootpool-100-1-1-159 test]# yum search tmux Repository extras is listed more than once in the configuration Last metadata expiration check: 0:33:52 ago on Fri 03 Mar 2023 09:10:34 AM CST.Name Exactly M…

【C++】适配器模式 -- stack/queue/dqueue

一、适配器模式 设计模式 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结;Java 语言非常关注设计模式,而 C 并没有太关注,但是一些常见的设计模式我们还是要学习。 迭代器模式 其实我们在前面学习 strin…

call、apply、bind的区别以及源码实现

首先,需要明确,call()、apply()、bind()这三个方法的作用都是 改变this指向它们之间的不同点在于:call和apply是直接调用的,而bind不会立即调用,需要手动调用(原因在于bind返回的是一个改变了this指向的函数…

请你喝一杯 Corretto?谈一谈 JDK 的新选择

前言如果以20年的时间为限,让我们选出一个影响力最大的程序语言,我的答案应该只有一个 – 那就是 Java。这个1995年诞生的全新的计算机语言,以“一次编写,到处运行”的跨平台特性以及面向对象、泛型编程等现代语言的特性迅速成为了…