团队开发之:代码规范说明

1.1  目的

今天人们越来越明白软件设计更多地是一种工程,而不是一种个人艺术。由于大型产品的开发通常由很多的人协同作战,如果不统一编程规范,最终合到一起的程序,其可读性将较差,这不仅给代码的理解带来障碍,增加维护阶段的工作量,同时不规范的代码隐含错误的可能性也比较大。

为了提高代码的可读性和质量,本文档针对Java编码规范详细设计说明。

1.2 范围

       本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改。本文档中没有说明的地方,请参看SUN Java标准代码规范。如果两边有冲突,以SUN Java标准为准。

       供开发人员进行阅读

1.3  术语

1.4 参考文档

 

2.标示符命名规范

2.1 原则

统一

统一是指,对于同一个概念,在程序中用同一种表示方法,比如对于供应商,既可以用supplier,也可以用provider,但是我们只能选定一个使用,至少在一个Java项目中保持统一。统一是作为重要的,如果对同一概念有不同的表示方法,会使代码混乱难以理解。即使不能取得好的名称,但是只要统一,阅读起来也不会太困难,因为阅读者只要理解一次。

达意

达意是指,标识符能准确的表达出它所代表的意义,比如: newSupplier, OrderPaymentGatewayService等;而 supplier1, service2,idtts等则不是好的命名方式。准确有两成含义,一是正确,而是丰富。如果给一个代表供应商的变量起名是 order,显然没有正确表达。同样的,supplier1, 远没有targetSupplier意义丰富。

简洁

简洁是指,在统一和达意的前提下,用尽量少的标识符。如果不能达意,宁愿不要简洁。比如:theOrderNameOfTheTargetSupplierWhichIsTransfered太长, transferedTargetSupplierOrderName则较好,但是transTgtSplOrdNm就不好了。省略元音的缩写方式不要使用,我们的英语往往还没有好到看得懂奇怪的缩写。

骆驼法则

Java中,除了包名,静态常量等特殊情况,大部分情况下标识符使用骆驼法则,即单词之间不使用特殊符号分割,而是通过首字母大写来分割。比如: supplierName, addNewContract,而不是 supplier_name, add_new_contract。

英文

尽量使用通俗易懂的英文单词,如果不会可以向队友求助,实在不行则使用汉语拼音,避免拼音与英文混用。比如表示归档,用archive比较好。

2.2 包名规范

使用小写和数字组合,不要出现其他字符和符号。例如:com.aps.alg

2.3 类名命名规范

首字母大写

后缀命名

类名往往用不同的后缀表达额外的意思,如下表:

后缀名

意义

举例

EJB

表示这个类为EJB类

LCIssueInfoManagerEJB

Service

表明这个类是个服务类,里面包含了给其他类提同业务服务的方法

PaymentOrderService

Impl

这个类是一个实现类,而不是接口

PaymentOrderServiceImpl

Inter

这个类是一个接口

LifeCycleInter

Dao

这个类封装了数据访问方法

PaymentOrderDao

Action

直接处理页面请求,管理页面逻辑了类

UpdateOrderListAction

Listener

响应某种事件的类

PaymentSuccessListener

Event

这个类代表了某种事件

PaymentSuccessEvent

Servlet

一个Servlet

PaymentCallbackServlet

Factory

生成某种对象工厂的类

PaymentOrderFactory

Adapter

用来连接某种以前不被支持的对象的类

DatabaseLogAdapter

Job

某种按时间运行的任务

PaymentOrderCancelJob

Wrapper

这是一个包装类,为了给某个类提供没有的能力

SelectableOrderListWrapper

Bean

这是一个POJO

MenuStateBean

2.4 方法名命名规范

首字母小写,动词在前

动词前缀往往表达特定的含义,如下表:

前缀名

意义

举例

create

创建

createOrder()

delete

删除

deleteOrder()

add

创建,暗示新创建的对象属于某个集合

addPaidOrder()

remove

删除

removeOrder()

init或则initialize

初始化,暗示会做些诸如获取资源等特殊动作

initializeObjectPool

destroy

销毁,暗示会做些诸如释放资源的特殊动作

destroyObjectPool

open

打开

openConnection()

close

关闭

closeConnection()<

read

读取

readUserName()

write

写入

writeUserName()

get

获得

getName()

set

设置

setName()

prepare

准备

prepareOrderList()

copy

复制

copyCustomerList()

modity

修改

modifyActualTotalAmount()

calculate

数值计算

calculateCommission()

do

执行某个过程或流程

doOrderCancelJob()

dispatch

判断程序流程转向

dispatchUserRequest()

start

开始

startOrderProcessing()

stop

结束

stopOrderProcessing()

send

发送某个消息或事件

sendOrderPaidMessage()

receive

接受消息或时间

receiveOrderPaidMessgae()

respond

响应用户动作

responseOrderListItemClicked()

find

查找对象

findNewSupplier()

update

更新对象

updateCommission()

2.5 变量命名规范

静态常量:全大写用下划线分割

例如:

public static find String ORDER_PAID_EVENT =“ORDER_PAID_EVENT”;

枚举:全大写,用下划线分割

例如:

public enum Events {
ORDER_PAID,
ORDER_CREATED
}

其他:首字母小写,骆驼法则

例如:

public StringorderName;

 

局部变量: 参数和局部变量名首字母小写,骆驼法则

尽量不要和域冲突,尽量表达这个变量在方法中的意义。

3.排版风格

规则一:程序块采用缩进风格编写,缩进为4个空格位。排版不混合使用空格和TAB键。

 

规则二:在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符,后不应加空格。

(1)  逗号、分号只在后面加空格,例如: 

call(a,b, c);

(2)  比较操作符, 赋值操作符"="、 "+=",算术操作符"+"、"%",逻辑操作符"&&"、"&",位域操作符"<<"、"^"等双目操作符的前后加空格

if(currentTime>= MAX_TIME_VALUE)

a = b + c;

a*= 2;

a= b ^ 2;

(3)  "!"、"~"、"++"、"--"等单目操作符前后不加空格

flag= !bIsEmpty; // 非操作"!"与内容之间

i++;// "++","--"与内容之间

(4)  "."前后不加空格

p.id = pId; // "."前后不加空格

(5) if、for、while、switch等与后面的括号间应加空格,使if等关键字更为突出、明显。

if(a >= b && c > d)

规则三:函数体的开始,类的定义,结构的定义,iffordowhileswitchcase语句中的程序都应采用缩进方式

不符合规范:

for(...)

{

    ... // program code

}

 

if(...) {

    ... // program code

    }

 

voidexample_fun( void ){

    ... // program code

    }

应如下书写:

for(...) {

    ... // program code

}

 

if(...) {

    ... // program code

}

 

voidexample_fun( void ){

    ... // program code

}

规则四:功能相对独立的程序块之间或forifdowhileswitch等语句前后应加一空行

不符合规范:

if(!valid_ni(ni))

{

    ... // program code

}

repssn_ind= ssn_data[index].repssn_index;

repssn_ni  = ssn_data[index].ni;

 

应如下书写:

if(!valid_ni(ni))

{

    ... // program code

}

 

repssn_ind= ssn_data[index].repssn_index;

repssn_ni  = ssn_data[index].ni;

规则五:if、while、for、case、default、do等语句自占一行。

不符合规范:

If(NULL == pUserCR) return;

应如下书写:

If(NULL == pUserCR)

{

                 return;

}

规则六:若语句较长(多于80字符),可分成多行写,划分出的新行要进行适应的缩进,使排版整齐,语句可读。

 

规则七:一行最多写一条语句。

不符合规范:

rect.length= 0 ; rect.width = 0 ;

rect.length= width = 0;

应书写成:

rect.length= 0 ;

rect.width= 0 ;

规则八:类先成员变量,后内部函数接口;关键字publicprotectedprivate依次按照顺序排版。

例如:

class A

{

public  int iNum;

 private int  iCode;

 private float fNum;

   …

publicvoid Func1(void);

publicvoid Func2(void);

private void Func3(void);

}

规则九:编写条件的时候采用“常量==变量”格式

4.注释规则

规则一:文件级注释

/**

 *

 *<li>模块名 : LoginController<br />

 *<li>文件名 : LoginController.java<br />

 *<li>创建时间 : 20151225<br />

 *<li>实现功能 : <br />                      (说明:该位置需要换行的时候结尾加上<br />,以便生成的文档格式友好)

 *<li>作者 : changyong<br />

 *<li>版本 : v0.0.1<br />

 *<li>----------------------------------------------------------<br />

 *<li>修改记录:<br />

 *<li>版本修改人修改内容<br />

 *<li>20151225 v0.0.1 changyong创建<br />(说明:该位置需要换行的时候结尾加上<br />,以便生成的文档格式友好)

 */

 

注:需记录文件内容,让人看注释就可以知道文件的大致内容;修改记录重点节点记录即可。

 

规则二:函数级注释

    /**

    *

    *能: <br />

    *  注释测试使用                    (说明:该位置需要换行的时候结尾加上<br />,最后一个由于下行开始加了,这里不用加,以便生成的文档格式友好)

    *<br />----------------------------------------------------------------<br />

    *修改记录<br />

    *  版本修改人修改内容<br />

    *20151225 v0.0.1 changyong创建                (说明:该位置需要换行的时候结尾加上<br />,最后一个由于下行开始加了,这里不用加,以便生成的文档格式友好)

    *<br />----------------------------------------------------------------

    *@param i

    *@return String

    */

注:重点函数进行记录说明,让人看了就知道函数功能,如何使用等信息;修改记录重点节点记录即可。

 

规则三:语句及函数内部结构注释

为了方便阅读代码尽可能的多做一些注释,特别是关键点一定要注释,但是也不要过于冗余盲目的注释,尽量达到注释即为大纲的效果。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
东北大学软件工程开发规范说明书CSND是一本指导软件工程师在软件开发过程中遵循的规范手册。这本说明书的目的是确保软件开发过程中的规范性、可维护性和可扩展性,提高软件开发过程的效率和质量。 该说明书主要包括以下几个方面的内容: 1. 项目规范:介绍了在软件开发项目中的组织架构、团队角色和职责,包括项目经理、开发人员、测试人员等。同时也包括项目管理流程、需求分析和评估,以及项目计划和进度控制等内容。 2. 编码规范:在软件编码过程中,规范了各种语言的命名规范代码格式、注释要求等。这有助于改进代码的可读性和可维护性,提高代码质量。 3. 测试规范:介绍了软件测试的各种方法、技术和工具,包括单元测试、集成测试、系统测试等。还包括了测试用例编写和执行的规范,以及测试结果的记录和分析。 4. 文档规范说明了软件开发过程中各种文档的编写要求和模板,包括需求文档设计文档、测试计划和报告等。这有利于提高文档的准确性、一致性和可读性,方便开发人员和管理人员的交流和合作。 全书还提供了许多实际案例和最佳实践,以供读者参考和借鉴。此外,为了使说明书更具实用性,作者还引用了大量的外部资源和参考资料。 总之,东北大学软件工程开发规范说明书CSND是一本指导软件工程师规范软件开发过程的实用手册,它可以提高软件开发质量和效率,减少开发中的错误和问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值