Java平台(其实整个编程界)有着一套很好的命名惯例。所谓惯例,可以理解为“约定俗成”。类似我们常见的《命名规则》《编码规则》《SQL文规则》等,经过提炼,可以基本看出里面的“规律”。
“约定”对于编程来说,意义远大于在其他领域。在Rails中,甚至是“约定大于配置”的。
具体到Java的一系列命名惯例,首先是包名。和.Net中的namespace类似,Java中的package是为了区别不同人、不同公司编写的可能名字相同的类用的,其实这句话应该反着说,因为是Java首先这么用的。而且和MS对namespace的无推荐不同,Sun推荐包名按照域名的逆序来书写,而且全是小写字母,每一层尽量是一个英文单词(名词最好)。尽量一个单词,而且尽量不大于8个字母,所以鼓励使用缩写。例如,使用util而不是utilities(有人也用utils)
2)类和接口(接口其实也是类,Java中万物皆类)的名字采用 Pascal命名法,即每个单词的首字母均大写,各个单词间无连接符。对于一些英文缩写,也推荐除首字母以外都小写。如,HttpUrl,而不是HTTPURL。这里尤其要注意的是仅有两个字母的缩写,如IO,ID,IP(呵呵,碰巧都是I字辈的),最好还是写成 DiskIo,UserId,TerminalIp。
3)类成员(属性和方法)名、局部变量名要用 驼峰命名法,即除首单词的首字母要小写外,其他同Pascal命名法。(这一点和.Net不同,.Net中除私有类成员外,都是Pascal命名法)
4)常量,用全大写,各个单词见用下划线“_”相连接。
5)getter/setter方法,getter/setter其实就是普通的方法,只是一种特定用途罢了。它们用于将被封装的私有属性对外提供访问的方法。通常是在属性名的前面加上 get 和 set ,再将属性名的首字母变大写。
这里的一个特殊地方是boolean型变量,除了之上的方法,也可以把 get 改为 is,如果属性名本身已经是以 is 开头了,就省掉这个 is 。这是 JavaBean 的规范,广义上讲,也可以用一个名词或名词短语,如:size,hashCode
(补充一点:C# VB.Net AS3 都有自己的“属性”语法,有人指为语法糖,但也不失为是一种使用更简单的方式,其本质还是和 Java”标准的”getter/setter 一样的,总之是对私有属性的封装)
6)特殊方法和属性:
静态工厂方法(见【第1条】):valueOf 和 getInstance 前者广泛用于对值类的类型转换,后者则出现在非值类的单例模式中
类型转换方法:toType,如 toString,toArray
返回当前对象的一个不同的视图:asType,如:asList,常用 Arrays.asList() 来将数组转换成List
一些省略了开头的“is”的boolean型属性,如 initialized 和 composite
一些常用的通用属性,如:height,digits,size 等
一些常用的通用方法,如:flush(),isEmpty() 等
7)在对英文单词的选择上,也尽量复合大多数人的习惯。
避免使用一些蹩脚的单词,而是使用常见的单词,而且最好是其他人也大多使用的单词。在对两个单词模棱两可时,可以在Javadoc中搜索一下,看看哪一个被类库使用的更多。例如,当你拿不定主意用 delete 还是 remove 时,到Javadoc中搜一下,你会发现 remove 的出现次数远比 delete 要多得多,可能仅仅是在物理上删除如文件或数据库中的记录的时候才用delete,一般对变量中内容的删除都使用remove。
总之,把标准的命名规则变成自己的习惯是一件可以受益匪浅的事情。就在我写这条笔记之前的几个小时,我在百度知道上回答了一个网友的提问。且不说问题的具体内容,但看他的命名就有问题:
public static String getDate(String sign,Date date,int day){
如果他真的是要得到一个 String 类型的返回值,这里就不应该使用 getDate 这个名字,这样会产生误会的。
下一章,就要讲到Exception了,这是比较深的一章,最近手上的工作还是比较多的,可能《笔记》会暂停2-3天,一方面是抓紧一下工作,另一方面,也要前后连贯地再好好研习一下《第8章 异常》
【Effective Java 学习笔记】系列连载专题请见:
http://tonylian.iteye.com/categories/64208
分享到:
相关推荐
### 命名惯例与规范在C#编程中的应用 #### 概述 在软件开发领域,特别是使用C#语言进行编程时,遵循一套...这些规则不仅适用于C#,在其他许多面向对象编程语言中也同样适用,成为编程社区普遍接受的最佳实践之一。
在C#编程中,遵循一套良好的命名惯例和规范至关重要,这不仅有助于提高代码的可读性和维护性,还能提升编程效率。以下是对C#控件命名的一些详细指导: ### 第一章:概述 规范制定原则: 1. **一致性**:在整个项目...
在CSS编码中,语义化的命名惯例是一种最佳实践,它强调了类名应反映元素的含义,而不是其外观或位置。语义化命名能够提高代码的可读性、可维护性和适应性,尤其是在大型项目中。以下是关于CSS语义化命名的一些详细...
如果类名由多个单词组成,可以使用连字符(-)或者驼峰式命名(如`mainContent`)来分隔单词,但第一个单词保持小写。 2. 利用HTML语义标签:尽可能利用HTML5提供的语义标签,如`<header>`、`<nav>`、`<main>`、`...
ABAP开发规范和命名规则是IBM提供的一套开发标准和命名惯例,为ABAP开发者提供了详细的开发指南和命名规则,以确保开发的程序代码质量和可读性。本文将对ABAP开发规范和命名规则进行详细的解释和说明。 一、文档...
4. 杂项规定(第二十九条至第三十九条):涵盖了一些特殊情况下信用证的处理,如时间计算、责任免除、通知和解释等。 UCP600的修订背景主要是为了解决UCP500实施过程中出现的争议和误解。例如,一些银行在理解和...
java 变量命名需要遵守一定的规则和惯例,以确保程序的可读性和维护性。在变量命名时,我们需要区分局部变量和实例变量,并遵守变量的作用域和修饰符的使用规则。 总结来说,java 变量命名的几个典型问题包括: 1....
在软件开发过程中,编程规则、惯例和约定是确保代码质量、可读性和团队协作效率的重要基石。这些规范不仅有助于减少错误,提高代码的可维护性,还能促进代码风格的一致性,使得团队成员能更快地理解和修改他人编写的...
这些惯例通常适用于特定的地域、行业或类型的贸易,是商人们在长期的交往中自发遵守并普遍接受的行为规范。例如,国际商会(ICC)制定的国际贸易术语解释通则(INCOTERMS)、跟单信用证统一惯例(UCP)以及联合国...
Oracle 对象命名规范是指在 Oracle 数据库中,對各種对象(如表、视图、索引、存储过程等)进行命名时所遵守的规则和惯例。这些规则和惯例的目的是为了提高数据的可读性、可维护性和可重用性,减少误解和错误的可能...
数学建模-公平席位分配问题(比例+惯例法)
* 命名惯例:使用有意义的变量名、函数名和类名,遵守驼峰命名法或下划线命名法。 * 代码缩进:使用空格或制表符来缩进代码,提高代码的可读性。 * 代码注释:使用注释来解释代码的逻辑和意图,提高代码的可读性和可...
Java 开发命名规范是指在 Java 项目中对包名、类名、变量名等命名的规则和惯例,旨在确保代码的可读性、可维护性和重用性。本文将对 Java 开发命名规范进行详细的解释和说明。 一、包名命名规范 包名是 Java 项目...
根据规范,过程和函数的名称应该遵守一定的命名惯例,例如,使用大写字母开头,驼峰命名法等。 ### 变量 变量是Object Pascal语言中的一个基本结构单元,用于存储和操作数据。根据规范,变量的名称应该遵守一定的...
国际惯例指的是在国际社会中,为不同国家的商人和商业实体普遍接受并遵守的习惯做法。国际惯例通常体现在国际贸易、海事、保险和商事仲裁等领域。 #### 知识点一:国际商事惯例的形成 国际商事惯例往往源于长期的...
在命名规范中,通常会涉及到表和字段命名的规则、数据类型的选择、键的命名以及约定俗成的命名惯例等。 根据提供的文件内容,我们可以总结出以下几个数据库命名规范的要点: 1. **表命名规范**: - 通常使用名词...
4. 命名惯例:开发者常使用如header、content、nav、sidebar、footer等通用名称,但不应视为固定标准,应结合项目需求制定个性化的命名规则。 JavaScript命名规范: 1. 变量命名:遵循驼峰式命名法,如variableName...
#### 三、类与结构体命名 **1. 类的命名** - **规则**:类名以大写字母"C"开头,后续单词首字母大写。 - **示例**:`CRectangle`, `CDataProcessor`。 - **注意事项**: - 除了特殊情况下,如异常类等,一般...
跟单信用证统一惯例UCP600 资料 ...第三十八可转让信用 UCP600 规定了可转让信用,例如可转让信用定义、可转让信用审核等。 第三十九款项让 UCP600 规定了款项让,例如款项让的定义、款项让的审核等。