代码编织梦想

命名规范

1. 项目名

项目名全部小写,且不使用下划线,含多个单词时使用划线分隔。

2. 包名

包名全部小写,且不使用下划线,即便含多个单词也不分隔。对于不同的项目,包名分为以下几种:(此部分与域名类似,可参考域名规则)

  • 公司项目:com.公司名.项目名.模块名.具体分类

  • 非盈利组织:org.组织名.项目名.模块名.具体分类

  • 团队项目:team.团队名.项目名.模块名.具体分类

  • 其它:

    • 个人项目:表示个人的英语单词有 individual、personal、private、one-man 等

      • indi:个体项目。指个人发起,但非自己独自完成的项目,可公开或私有项目,版权主要属于发起者。

        包名规则:indi.发起者名.项目名.模块名.具体分类

      • pers:个人项目。指个人发起,独自完成,可分享的项目,版权主要属于个人。

        包名规则:pers.个人名.项目名.模块名.具体分类

      • priv:私有项目。指个人发起,独自完成,非公开的私人使用的项目,版权属于个人。

        包名规则:priv.个人名.项目名.模块名.具体分类

      • onem:与 indi 相同

3. 类名

类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。如:

   public class MainActivity extends AppCompatActivity { /* TODO */ }

另外,类名最好为名词,或者是以名词结尾,而前缀为修饰该名词的形容词、动名词。

4. 常量名

常量名全部大写。如果名称由多个单词组成,则这些单词之间使用下划线隔开。如:

   public static final int MAX_LENGTH = 100;

5. 变量名

变量名的首字母小写。如果名称由多个单词组成,则从第二个单词开始,每个单词的首字母都要大写。如:

   private boolean upPressed;

对于泛型形参,其遵循类名的规则。

另外,在定义泛型类型形参时,其习惯的象征意义为:

  • E:表示集合的元素类型

  • K、V:分别表示集合中键和值的类型

  • T、U、S:均表示任意类型

6. 方法名

变量名的首字母小写。如果名称由多个单词组成,则从第二个单词开始,每个单词的首字母都要大写。 如:

   public void setName(String aName) { this.name = aName; }

对于不同领域的方法,其附加的规则为:

  • Service / DAO 层方法命名规则:

    • 字段初始化的方法用 set 做前缀。

    • 插入的方法用 save 或 insert 做前缀。

    • 获取单个对象的方法用 get 做前缀。

    • 获取多个对象的方法用 list 做前缀。

    • 修改的方法用 update 做前缀。

    • 删除的方法用 remove 或 delete 做前缀。

    • 获取统计值的方法用 count 做前缀。

  • 领域模型命名规则:

    • 数据对象: xxxDO。 其中xxx 为数据表名。

    • 数据传输对象: xxxDTO。 其中 xxx 为业务领域相关的名称。

    • 展示对象: xxxVO, xxx 为网页名称。

    注意: POJO 是 DO 、 DTO、 BO 、VO 的统称,所以不要命名成 xxxPOJO 。

8. 其它命名技巧

  • 直接使用类型名命名。如:

        View view;
    
  • 在变量名前面加上一些前缀。如:a

    附: 在 C++ 中,往往喜欢使用前缀 m,x,下划线_,Java 程序员通常不这么做

        Box aBox;
    
  • 使用谐音简化。如使用数字2来替代单词to,使用数字4来替代单词for。

    在这种情况下,数字本身也能起到分隔字母的作用,因此这种技巧能替代使用大写字母进行分隔,但数字谐音不能充当后缀。

9. 应当避免的行为

  • 使用单个英文小写字母作为名称。如:i,j,k,a

  • 使用简单泛化意义的数字作为后缀。如:1、2、…

  • 类方法形参变量的名称和类字段相同

  • 使用英文以外的人类文字。如:使用中文、汉语拼音

10. 经典的命名法

  • 下划线命名法:

    单词与单词之间通过下划线分隔。

  • 驼峰式命名法(小驼峰式命名法):

    第一个单词首字母小写,后面的单词首字母大写,其它字母均小写。

  • 帕斯卡命名法(大驼峰式命名法):

    每个单词的第一个字母都大写,其它字母均小写。

  • 匈牙利命名法:

    开头字母用变量类型的缩写,这一部分全部用小写。其余部分用变量的英文或英文的缩写,这一部分的大小写遵循帕斯卡命名法。

11. 常用命名词汇

  • 笔者常用的匈牙利缩写命名如下表:

    缩写全称意义
    ptrpointer指针
    srcsource来源
    rspresponse响应
    implimplement实现
    ---
    msgmessage信息
    imgimage图像
    ---
    btnbutton按钮
    dlgdialog对话框
    ---
    fxframework框架
  • 笔者常用的前缀缩写如下表:

    缩写全称意义
    optoption选择
    infoinformation信息
    reqrequest请求
  • 普通的匈牙利命名如下表:

    缩写意义
    a数组(Array)
    b布尔值(Boolean)
    by字节(BYte)
    c有符号字符(Char)
    cb无符号字符(Char Byte)
    cr颜色参考值(Color Reference)
    cx、cy坐标差(坐标:Coordinate)
    dw双字节(Double Word)
    fn函数(FuNction)
    h句柄(Handle)
    i整型(Int)
    l长整型(Long int)
    lp长指针(Long Pointer)
    m类成员(class Member)
    n短整型(Number)
    np近程指针(Near Pointer)
    p指针(Pointer)
    s字符串(String)
    sz以 null 结尾的字符串(String with Zero end)
    w字(Word)
  • 多用于包名或类名

    意义拼写位置
    抽象Abstract、Base前缀
    枚举Enum后缀
    接口实现Impl后缀
    异常Exception后缀
    工具Utils后缀
    测试Test后缀
    处理器 / 校验器Handler / Validator-
    断言Predicate-
    包装类Wrapper后缀
    意义(领域模型系列)拼写(后缀)
    -DO
    -DTO
    -VO
    -DAO
    意义(设计模式系列)拼写(后缀)
    -Builder
    -Factory
    意义(MVC系列)拼写(后缀)
    控制器Controller
    服务Service
    数据访问对象DAO

注释规范

1. 类注释

类注释在每个类的前面添加。注释模板如下:

   /**
   * Copyright (C), 2020-202X, Company name info. Co., Ltd.
   * FileName: Test.java
   * 类的详细说明
   *
   * @author 类创建者姓名
   * @Date  创建日期
   * @version 版本号
   */

2.字段注释

字段注释在每个字段的前面添加。注释模板如下:

   /** 这是为了保证软件开始界面的提示信息只提示一次 */
   private static int startMessageCounter = 0;

3.构造器注释

构造器注释在每个构造器方法的前面添加。注释模板如下:

   /**
   * 构造方法的详细使用说明
   *
   * @param 参数1 参数1的使用说明
   * @throws 异常类型.错误代码 注明从此类方法中抛出异常的说明
   */

4.方法注释

方法注释在每个方法的前面添加。注释模板如下:

   /**
   * 类方法的详细使用说明
   *
   * @param 参数1 参数1的使用说明
   * @return 返回结果的说明
   * @throws 异常类型.错误代码 注明从此类方法中抛出异常的说明
   */

5.方法内部注释

方法内部注释添加在所需要注释的代码前面,可使用一行或多行。如:

   // 创建Spring容器
   var ctx = new ClassPathXmlApplicationContext("spring-config.xml");

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/wangpaiblog/article/details/111089492

Java_Day9(方法的解读、分类、定义、返回值和参数、重载,参数的传递)-爱代码爱编程

Java_Day9(方法的解读、分类、定义、返回值和参数、重载,参数的传递) 解读方法 方法:是一个具有特定功能的代码/代码片段的合集 方法必须先定义后使用 方法可以是JDK提供的,也可以是自己定义的 public static void main(String[] args){ } public static :方法的访问修饰

Java IO流实现文件复制-爱代码爱编程

Java实现文件复制 1.实现目标 复制文件,将D盘下的test.txt文本文件的内容复制到 D\test目录下的target.txt文件中(D:\test.txt —> D:\test\target.txt),通过字节流流读取。 2.所需工具类 文件输入流-----FileInputStream,从文件读取内容到内存文件输出流-----Fil

java模拟选民投票-爱代码爱编程

我们就模拟选民投票,当票数达到100票后,停止投票。 一、代码图 直接上代码 实体类 public class Voter { private String name;//选民名称 private static int a;//累计票数,使用静态,使票数不会刷新为0 public Voter(String name

Java-- synchronized--原理总结--偏向锁和自旋优化-爱代码爱编程

Java-- synchronized--原理总结--偏向锁和自旋优化 偏向锁自旋优化 偏向锁 首先我们了解一下对象头MarkWord结构 后面的lock 分别对应着对象的不同状态, 注意:正常状态和偏向锁都是01结尾,但是偏向锁的倒数第三位是1,正常的是0,偏向锁前面存储的偏向线程id和时间戳 下面是对象MarkWord不通状态存储的

♢位运算♢常用公式及练习详解-爱代码爱编程

JAVA位运算符详解 详细见知乎穆哥学堂 在java语言中,提供了7种位运算符,分别是按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、带符号右移(>>)和无符号右移(>>>)。这些运算符当中,仅有~是单目运算符,其他运算符均为双目运算符。位运算符是对long、int、short、b

第17天学习Java的笔记(匿名对象,随机数,猜数字小游戏)-爱代码爱编程

33天! 匿名对象 package Demo1701; public class Person { String name; public void showName() { System.out.println("我的名字是" + name); } } package Demo1701; /* 创

java序列化,反序列化-爱代码爱编程

序列化,反序列化:序列化是指把一个Java对象变成二进制内容,本质上就是一个byte[]数组。 为什么要把Java对象序列化呢?因为序列化后可以把byte[]保存到文件中,或者把byte[]通过网络传输到远程,这样,就相当于把Java对象存储到文件或者通过网络传输出去了。 有序列化,就有反序列化,即把一个二进制内容(也就是byte[]数组)变回Java对象

小白如何入门 Python 爬虫?-爱代码爱编程

本文针对初学者,我会用最简单的案例告诉你如何入门python爬虫! 想要入门Python 爬虫首先需要解决四个问题 熟悉python编程 了解HTML 了解网络爬虫的基本原理 学习使用python爬虫库 一、你应该知道什么是爬虫? 网络爬虫,其实叫作网络数据采集更容易理解。 就是通过编程向网络服务器请求数据(HTML表单),然后解析HTML,提取

Java中的基本运算符-爱代码爱编程

运算符 使用方法示例 算术运算符 public class Demo006 { public static void main(String[] args) { int a = 10; int b = 20; int c = 21; //idea快捷键:ctrl+d,复制当

python入门的魔力手册 第一章-爱代码爱编程

Python入门的魔力手册(基础篇) 第一章Why Python安装Python环境使用IDE工具开始学习编程变量来一段代码字符串 本文仅适合没有python基础,以及准备入手python的小白,白中白,大佬和已经入门的大哥直接划走,不要客气, 第一章 你好!欢迎来到python入门的魔力手册,枯燥的书本,和无趣的视频课,是否让你失去了对p

Java进阶第四章-爱代码爱编程

Java进阶之继承与多态 继承多态变量和向上造型多态类型系统 继承 1.在一开始创建Database数据库类、CD类、DVD类的时候,我们出现了大量的代码复制,这是代码质量不良的表现,那么我们应该如何改进呢? 2.代码里面的自己推测的注意点: ①子类与父类之间是如何建立联系的呢?是通过在子类的 “ public class 子类名 ”后面加上

java-类与对象(简单易懂,一看就会)-爱代码爱编程

java-类与对象 类与对象的概念类与对象的定义与使用实例代码 类与对象的概念 类:具有的相同、相似的属性、特征、行为方式、功能的一类事物的抽象,例如王者荣耀游戏里的英雄是一个类。 对象:是类的具体实例,例如王者荣耀游戏里的英雄李白就是一个对象。 类与对象的定义与使用 类的定义: 关键字class ,类要写在同名的 .java文件中 ,