Java编程规范

一、常见命名规则

(1)匈牙利命名法

比 较著名的命名规则是匈牙利命名法,但这种命名法对于跨平台移植简直是灾难。这种命名方法是由Microsoft程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。其主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀 之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。例如:lpszStr, 表示指向一个以'\0'结尾的字符串(sz)的长指针(lp)变量。

 

(2)骆驼命名法

骆驼(Camel)命名法近年来越来越流行,在许多新的函数库和 Java这样的平台下使用得当相多。骆驼命名法,正如它的名称所表示的那样,指的是混合使用大小写字母来构成标识符的名字。其中第一个单词首字母小写,余 下的单词首字母大写。例如:printEmployeePaychecks(),函数名中每一个逻辑断点都有一个大写字母来标记。

 

(3)帕斯卡命名法

帕斯卡(Pascal)命名法与骆驼命名法类似。只不过骆驼命名法是第一个单词首字母小写,而帕斯卡命名法则是第一个单词首字母大写。例如:DisplayInfo()和UserName都是采用了帕斯卡命名法。
在C#中,以帕斯卡命名法和骆驼命名法居多。事实上,很多程序设计者在实际命名时会将骆驼命名法和帕斯卡结合使用,例如变量名采用骆驼命名法,而函数采用帕斯卡命名法。

 

(4)下划线命名法

下划线法是随着C语言的出现流行起来的,在UNIX/LIUNX这样的环境,以及GNU代码中使用非常普遍。
对于以上的几种命名规则,我们认为比较对变量或函数进行描述的是骆驼命名法和下划线命名法,因此,我们推荐使用这两种命名方面。

 

二、java命名风格

(1)包命名

包名按照域名的范围从大到小逐步列出,恰好和Internet上的域名命名规则相反。

由一组以“.”连接的标识符构成,通常第一个标识符为符合网络域名的两个或者三个英文小写字母。

package cn.edu.scau.mk.testdemo;

 

(2)类、接口命名(帕斯卡命名法)

类的名字必须由大写字母开头而单词中的其他字母均为小写;如果类名称由多个单词组成,则每个单词的首字母均应为大写例如TestDemo;如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLManager,还有一点命名技巧就是由于类是设计用来代表对象的,所以在命名类时应尽量选择名词。

public class TestDemo {}

 

(3)方法名(驼峰命名法)

方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。可以为动词或动词+名词组合。

1、设置/获取某个值的Method,应该遵循setV/getV规范(V是变量名)

2、返回数组长度的Method,应该命名为length

3、返回集合长度的Method,应该命名为size

4、测试某个布尔值的Method,应该命名为isV

5、将对象转换为某个特定类型的Mehod应该命名为toT(T是类型名)

package cn.edu.scau.mk.testdemo;import java.util.ArrayList;
import java.util.List;/**** @author MK*/
public class TestDemo {private int key=0;private boolean finish=false;private int[] scores=new int[2];private List<String> names=new ArrayList<>();/*** @return the key*/public int getKey() {return key;}/*** @param key the key to set*/public void setKey(int key) {this.key = key;}/*** @return the finish*/public boolean isFinish() {return finish;}/*** @param finish the finish to set*/public void setFinish(boolean finish) {this.finish = finish;}public int length() {return scores.length;}public int size() {return names.size();}
}

 

(4)变量名(驼峰命名法)

普通变量命名应该采用首字母小写,其他字母首字母大写的方式。

public class TestDemo {private String personName; 
}

 

(5)静态常量

final static变量的名字应该都大写,并且指出完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词如。

public class TestDemo {static final String PERSON_NAME="Jack";    
}

 

(6)逻辑变量

  避免用flag来命名状态变量,用is来命名逻辑变量。

public class TestDemo {private boolean isFinish; 
}

 

(7)数组

总是使用以下方式定义数组:

int[] arr = new int[10];

禁止使用C语言的是形式:

int arr[] = new int[2];

 

(8)泛型参数

Container中的Element应该用E表示;Map里的key用K表示,value用V;Type用T表示;异常用X表示

如果需要接收多个Type类型的参数,应该用邻接T的大写字母——例如S——来依次表示,当然也可以用T1, T2这样的方式

如果在范型方法存在于范型类中,应当尽量避免使用同样的Type Variable Names,以免混淆

publicclass HashSet<E> extends AbstractSet<E> {
}
publicclass HashMap<K, V> extends AbstractMap<K, V> {
}
publicclass ThreadLocal<T> {
}
publicinterface Functor<T, X extends Throwable> {T val() throws X; }

 

(9)推荐的命名

1.当要区别接口和实现类的时候,可以在类的后面加上“Impl”。

interface Container{
}class ContainerImpl implements Container{
}

 

2.Exception类最好能用“Exception”做为类命名的结尾

class DataNotFoundException extends Exception{
}class InvalidArgumentException extends Exception{
}

 

3..抽象类最好能用“Abstract”做为类命名的开头

abstract class AbstractBeanDefinition{
}abstract class AbstractBeanFactory{}

 

4. Test类最好能用“Test”做为类命名的结尾

class PersonTest {}

 

5.简称与缩写(不推荐使用)

cp代表colorPointbuf代表bufferoff代表offsetlen代表length

 

除非是在循环中,否则一般不推荐使用单个字母作为变量名,不过也有例外,即约定俗成的单个字母

b代表bytec代表chard代表doublee代表Exceptionf代表floati, j, k代表整数l代表longo代表Objects代表Stringv代表某些类型的特定值

 

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

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

相关文章

XML—— 验证XML文档

【0】README 0.0&#xff09;本文文字描述转自 core java volume 2 &#xff0c; 旨在理解 XML—— 验证XML文档 的基础知识 0.1&#xff09;problemsolution &#xff08;干货——不推荐使用DOM 技术解析XML&#xff09; 0.1.1&#xff09;problem&#xff1a;如果仅仅按照…

计算机数据链路层教案,第三章 数据链路层(2) 新.ppt

文档介绍&#xff1a;计算机通信网20112011年教案年教案作者:段景山作者:段景山杨宁杨宁毛玉明毛玉明2第三章数据链路层??链路层功能链路层功能??成帧成帧??差错检测和纠正差错检测和纠正??差控与流控协议差控与流控协议??协议描述与验证协议描述与验证??示例示例?…

java导出javadoc文档

一、注释 (1)文档注释的格式化 生成的文档是 HTML 格式&#xff0c;而这些 HTML 格式的标识符并不是 javadoc 加的&#xff0c;而是我们在写注释的时候写上去的。比如&#xff0c;需要换行时&#xff0c;不是敲入一个回车符&#xff0c;而是写入 &#xff1c;br&#xff1e;&a…

java内核_测量时间:从Java到内核再到

java内核问题陈述 当您深入研究时&#xff0c;即使是最基本的问题也会变得很有趣。 今天&#xff0c;我想深入研究一下Java时间。 我们将从Java API的最基础知识开始&#xff0c;然后逐步降低堆栈&#xff1a;通过OpenJDK源代码glibc一直到Linux内核。 我们将研究各种环境下的性…

XML——文档类型定义(DTD-Document Type Definition)

【0】README 0.1&#xff09;本文文字描述转自 core java volume 2 &#xff0c; 旨在理解 XML——文档类型定义&#xff08;DTD-Document Type Definition&#xff09; 的基础知识&#xff1b; 0.2&#xff09; for source code, please visit https://github.com/pacosonTa…

职称计算机考试 数量,职称计算机考试WPS基础考点:自动求和

职称计算机考试WPS基础考点&#xff1a;自动求和导语&#xff1a;随着信息技术的发展&#xff0c;计算机日益走进人们的工作、学习和生活&#xff0c;成为专业技术人员不可或缺的工具。下面我们一起来看看职称计算机考试WPS的内容吧。1. 对不相邻单元格的数据求和假如要将单元格…

java静态导入

一、静态导入 在Java 5中&#xff0c;import语句得到了增强&#xff0c;以便提供甚至更加强大的减少击键次数功能&#xff0c;虽然一些人争议说这是以可读性为代价的。这种新的特性成为静态导入。当你想使用static成员时&#xff0c;可以使用静态导入&#xff08;在API中的类和…

java流写入数据库_成为Java流大师–第4部分:数据库流

java流写入数据库SQL一直是一种声明性语言&#xff0c;而Java长期以来势在必行。 Java流改变了游戏规则。 通过本动手文章编写您的方式&#xff0c;并学习如何使用Java流对RDBMS数据库执行声明性查询&#xff0c;而无需编写任何SQL代码。 您会发现&#xff0c;Java流和SQL命令的…

XML——XML Schema

【0】README 0.0&#xff09;本文文字描述转自 core java volume 2 &#xff0c; 旨在理解 XML——XML Schema 的基础知识 &#xff1b;&#xff08;本文不涉及源代码&#xff0c; 很遗憾&#xff0c;以后会补充&#xff09; 【1】XML Schema 相关 1.0&#xff09;为什么引入…

怎么为pdf文件添加水印?

怎么为pdf文件添加水印&#xff1f;PDF是一种很好用的文件格式&#xff0c;这种格式能够很有效的保护我们的文件&#xff0c;但有时可能还会被破解&#xff0c;这种时候在PDF上添加水印就是比较好的方法。 综上所述&#xff0c;PDF是保密性很强的文件&#xff0c;但添加水印能够…

皖西学院计算机协会组织部,皖西学院

皖西学院关于卢义忠同志兼任安徽省高校后勤协会理事的请示安徽省委组织部:根据《关于进一步规范党政机关和企事业单位领导干部兼任社会组织职务审批管理的通知》(皖组通字〔2016〕40号)等文件精神&#xff0c;经皖西学院党委1月17日研究建议&#xff1a;因校领导分工调整&#…

java 用流创建流_成为Java流大师–第1部分:创建流

java 用流创建流在许多情况下&#xff0c;声明性代码&#xff08;例如&#xff0c;具有Streams的功能组合&#xff09;提供了出色的代码指标。 通过该动手实验文章系列进行编码&#xff0c;并成为Java Streams的主教练&#xff0c;从而成为一名更好的Java程序员。 Streams的整…

java的for循环

一、普通for循环&#xff08;1&#xff09;for循环语法 for&#xff08;initialization; condition; update&#xff09;{statements;} &#xff08;2&#xff09;语法解释 1、for语句执行时&#xff0c;首先执行初始化操作&#xff08;initialization&#xff09;&#xff0c…

XML——使用 XPath来定位信息+使用命名空间

【0】README 0.1&#xff09;本文文字描述转自 core java volume 2 &#xff0c; 旨在理解 XML——使用 XPath来定位信息使用命名空间 的基础知识 &#xff1b; 0.2&#xff09; for detailed XPath info &#xff1a; please visit ( http://www.ruanyifeng.com/blog/2009/…

计算机教室英语怎么读音,网络教室,network classroom,音标,读音,翻译,英文例句,英语词典...

多媒体教室1.多媒体教室基本组成多媒体教室由多媒体计算机、液晶投影机、数字视频展示台、中央控制系统、投影屏幕、音响设备等多种现代教学设备组成。(1)多媒体液晶投影机是整个多媒体演示教室中最重要的也是最昂贵的设备&#xff0c;它连接着计算机系统、所有视频输出系统及数…

算法一之简单选择排序

一、 选择排序的思想 选择排序的基本思想是&#xff1a;每一趟在n-i1&#xff08;i1&#xff0c;2&#xff0c;…n-1&#xff09;个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。简单选择排序的基本思想&a…

XML——流机制解析器

【0】README 0.1&#xff09; 本文文字描述转自 core java volume 2 &#xff0c; 旨在理解 XML——流机制解析器 的基础知识 &#xff1b; 0.2&#xff09; for detailed StAX, please visit http://blog.csdn.net/pacosonswjtu/article/details/50569728 【1】XML——流机制…

第512章 河系量子计算机,第512章、河系量子计算机

69中文网 www.69zww.cc&#xff0c;最快更新分身投胎万界最新章节&#xff01;但AI智能所容身的量子计算机就大得有些恐怖了。其总体积丝毫不亚于一个小型河系&#xff01;什么是河系&#xff1f;银河系&#xff0c;仙女星系等等都是大小不等的河系&#xff01;而AI智能容身的量…

idea内置junit5_JUnit 5和Selenium –使用Selenium内置的`PageFactory`实现页面对象模式

idea内置junit5Selenium是一组支持浏览器自动化的工具和库&#xff0c;主要用于Web应用程序测试。 Selenium的组件之一是Selenium WebDriver&#xff0c;它提供客户端库&#xff0c;JSON有线协议&#xff08;与浏览器驱动程序进行通信的协议&#xff09;和浏览器驱动程序。 Sel…

算法二之树形选择排序

一、树形选择排序的基本思想 &#xff08;1&#xff09; 树形选择排序又称锦标赛排序&#xff08;Tournament Sort&#xff09;&#xff0c;是一种按照锦标赛的思想进行选择排序的方法。首先对n个记录的关键字进行两两比较&#xff0c;然后在n/2个较小者之间再进行两两比较&am…