公司软件系统编程格式规范
根据网络资源整理的公司软件系统编程规范,各开发人员予以执行此规范。
1. 前言
为确保系统源程序可读性,从而增强系统可维护性,兹制定下述编程规范,以规范系统各部分编程。系统继承的其它资源中的源程序也应按此规范作相应修改。
2. 试用范围
本文档将作为信息公司开发部(JAVA语言)软件项目系统开发的编程格式规范。在系统的编码、测试及维护过程中,要求严格遵守。
3. 命名规范
3.1 公共约定
Ø 命名指系统中对源文件名、方法、目录、包、数据库表名、数据库字段等的命名。
Ø 系统所用的命名都使用英文缩写来表达。
Ø 命名的组成方式为:前缀+{命名词素缩写},前缀表达出命名的用途,如数据库表等。
Ø 命名的前缀由项目组确定。
Ø 除系统公共维护对象外的其他对象,命名全部用小写。一种方式用“_”作连接符,另一种方式是词素的第一个字母大写直接连接在一起。在本规范中,数据库名、数据库字段名采用第一种方式,其余采用第二种方式。
Ø 使用可以准确说明变量/字段/类/接口/包等的完整的英文描述符。例如,采用类似 firstName,listAllUsers 或 CorporateCustomer 这样的名字,严禁使用汉语拼音及不相关单词命名。
Ø 采用大小写混合,提高名字的可读性。一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。包名全部小写。
Ø 尽量少用缩写,但如果一定要使用,当使用公共缩写和习惯缩写等,如实现(implement)可缩写成impl,经理(manager)可缩写成mgr等,具体参看下表,严禁滥用缩写。
Ø 避免使用长名字(最好不超过 25 个字母)。
Ø 避免使用数字,但可用2代替to,用4代替for等,如:go2Jsp。
3.2 文件、包
Ø 基本包:com.czpost,所有包、文件都从属于此包。
Ø 不得将类直接定义在基本包下,所有项目中的类、接口等都当定义在各自的项目和模块包中。
3.3 类、接口命名规范
Ø 所有单词首字母大写。使用能确切反应该类、接口含义、功能等的词。一般采用名词。
3.4 方法命名规范
方法的命名应采用完整的英文描述符,大小写混合使用:所有中间单词的第一个字母大写。法名称的第一个单词常常采用一个有强烈动作色彩的动词。
取值类使用get前缀,设值类使用set前缀,判断类使用is(has)前缀。
例:public void replace(String sourceStr,String oldStr, String newStr)
3.5 常量
采用完整的英文大写单词,在词与词之间用下划线连接,如:DEFAULT_VALUE
3.6 变量和参数
ü 整型变量(包括int,short,long):以 n 开头,例如:long nCredNum;
ü 浮点型变量(包括float,double):以 f 开头,例如:double fTranAmt;
ü 字符变量:以 c 开头,例如:char cPageFlag;
ü 布尔型变量:以is开头,例如:booleanisFlag;
ü 字符串变量:以 s 开头,例如:char sPageNo[2+1];
ü 全局变量:以g开头结合数据的类型,例如:char gsBankNo[10+1];
ü 静态变量:静态变量在文件中同样是全局变量,命名规则同全局变量。
ü 系统级变量:系统级变量同样是全局变量,以 ‘_’开头结合数据的类型。
临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。
3.7 组件/部件
应采用完整的英文描述符命名组件(接口部件),遵循匈牙利命名法则
ü 按钮变量 btn+Xxxxxxx 例如:btnSave, btn Exit, btnPrint等
ü 题标变量 lbl+Xxxxxxxx 例如:lblName, lblSex等
3.8 集合
一个集合,例如数组和矢量,应采用复数命名来表示队列中存放的对象类型。命名应采用完整的英文描述符,名字中所有非开头的单词的第一个字母应大写,适当使用集合缩写前缀。如:
Vector vProducts = new Vector(); //产品向量
Array aryUsers = new Array(); //用户列表
3.9 神秘的数
3.10 其他
命名时应使用复数来表示它们代表多值。如:orderItems。
3.11 异常类
异常类名由表示该异常类型的单词和Exception组成,如ActionException。
异常实例一般使用e、ex等,在多个异常时使用该异常名或简写加E,Ex等组成,如:
3.12 数组命名
4. 数据库规范
规范中应包括三个部分:编码的规范、字段类型长度的定义、表设计的特殊说明。
4.1 编码的规范
编码主要是要注意编码的前后缀,以便看到编码则知道是什么类型。给各个表与字段编码时,尽量保持编码的长度在20个字符以内,编码要求有一定意义,并且易懂。
ü 命名词素如果由单一词组成,可用全拼;如果是多词组成,用缩写。缩写间用下划线。
Ø 主键pk_ [字符串or长整型] 例如:pk_company
Ø 外键fk_ [字符串or长整型] 例如:fk_employee
4.2 字段类型长度定义
ü 字符串的长度一般定义20、30、50、100、256、512、1024、2048、4096,超过4096个字符可以建议用文本类型来定义。
ü 定义字段的长度主要用于定义域的字段长度,从而规范表字段的类型及长度。
4.3 表设计的特殊说明
ü 表中的记录如果是假删除的话,则每个表需要统一的删除字段。
ü 每一表建议只有主键非空,其余字段均可空,字段的非空判断交由程序来处理,不用数据库来判断。
5. 书写格式规范
严格要求书写格式是为了使程序整齐美观、易于阅读、风格统一,程序员对规范书写的必要性要有明确认识。建议源程序使用eclipse等工具开发,格式规范预先在工具中设置。
5.1 缩进
5.2 空格
5.3 对齐
变量定义最好通过添加空格或TAB键形成对齐,同一类型的变量最好放在一起。如下例所示:
5.4 空行
5.5 注释
注释必不可少,但也不应过多,不要被动的为写注释而写注释。以下是四种必要的注释:
6. 代码文件风格
以java文件为例,所有的源代码文件都必须遵守如下的样式规则:
对于规范的派生类代码文件,尽量用工具如eclipse来生成文件格式,避免用手工制作的头文件/实现文件。
package 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。
import hotlava.util.Application;
这里 java.io.* 使用来代替InputStream and OutputStream的。
* Description: 确定鼠标当前在哪个作业栏位中并返回作业号
* @Copyright: Copyright (c) 2002
*A class representing a set of packet and byte counters
* It is observable to allow it to be watched, but only
* reports changes when the current set iscomplete
接下来是类定义,包含了在不同的行的 extends 和 implements
public 的成员变量必须生成文档(JavaDoc)。proceted、private和 package 定义的成员变量如果名字含义明确的话,可以没有注释。
接下来是类变量的存取的方法。它只是简单的用来将类的变量赋值获取值的话,可以简单的写在一行上。(个人认为尽量分行写)
* @return an array containing the statistical data. This array has been
* freshly allocated and can be modified by the caller.
return copyArray(packets, offset);
return copyArray(bytes, offset);
public void setPackets(int[] packets)
接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面)。
访问类型("public","private" 等.)和任何"static","final"或"synchronized"应该在一行中,并且方法和参数另写一行,这样可以使方法和参数更易读。
如果这个类是可以被克隆的,那么下一步就是 clone 方法:
CounterSet obj = (CounterSet)super.clone();
obj.packets = (int[])packets.clone();
catch(CloneNotSupportedException e)
throw new InternalError("UnexpectedCloneNotSUpportedException: "
* (such as when restoring from a database)
void setArray(int[] r1, int[] r2, int[] r3, int[] r4)
throws IllegalArgumentException
// Ensure the arrays are of equal size
if (r1.length != r2.length || r1.length!= r3.length || r1.length
throw newIllegalArgumentException("Arrays must be of the same size";
System.arraycopy(r1, 0, r3, 0, r1.length);
System.arraycopy(r2, 0, r4, 0, r1.length);
Stringretval = "CounterSet: ";
for (int i = 0; i < data.length();i++)
retval +=data.bytes.toString();
retval +=data.packets.toString();
如果main(String[]) 方法已经定义了, 那么它应该写在类的底部。
公司软件系统编程格式规范相关推荐
- java的mysql语句规范_JAVA语言编程格式高级规范
作为一位开发人员,都要有严格的代码规范.为此我总结了一些代码规范案例. 目 录 1. 前言 2. 试用范围 3. JAVA命名规范-- 3.1 公共约定 3.2 Java文件.包 3.3 类.接口命名 ...
- sun公司java编程规范【转载】
java编程规范要学习的大致内容有如下部分,一个目录: Java编码规范 1 1.说明 3 1.1为什么要有编码规范 3 1.2版权声明 3 2.文件名(File Names) 3 2.1文件后缀(F ...
- Apollo进阶课程 ⑧ | 高精地图的格式规范
目录 高精地图规范格式分类 NDS格式规范 Open DRIVE格式规范 原文链接:Apollo进阶课程 ⑧ | 高精地图的格式规范 上周阿波君为大家详细介绍了「Apollo进阶课程⑦高精地图的采集与 ...
- c,c++代码格式规范
c,c++代码格式规范 第一章 原则 使代码易于管理的方法之一是增强代码一致性,让别人可以读懂你的代码是很重要的,保持统一编程风格意味着可以轻松根据"模式匹配"规则推断各种符号的含 ...
- C/C++代码格式规范(一)
在写代码的时候,通常需要遵循一定的代码格式规范,本文针对自己做项目以及所接触的代码形式,同时也参考红帽rpm源码和谷歌代码规范,总结一下写代码时的编程规范,当然这不是硬性规定,许多地方可以根据自己的喜 ...
- C语言编程的书写规则,关于C语言编程书写规范的规则和建议.doc
关于C语言编程书写规范的规则和建议 关于C语言编程书写规范的规则和建议 头文件 头文件由三部分内容组成: 1.头文件开头处的版权和版本声明. 2.预处理块. 3.函数和类结构声明等. [规则]为了防止 ...
- Java日志格式规范
Java日志格式规范 文章目录 Java日志格式规范 **| 日志的作用** **| 撰写日志的要求** **日志的可读性:**日志时给人读的,不仅仅是让自己明白,也要让没有接触过我们源代码的其他程序 ...
- Python:处理一些格式规范的文字
你要处理的大多数文字都是比较干净.格式规范的.格式规范的文字通常可以满足一些需求,不过究竟什么是"格式混乱",什么算"格式规范",确实因人而异. 通常,格式规范 ...
- 中文 Markdown 编写格式规范的命令行工具 lint-md
lint-md 用于检查中文 markdown 编写格式规范的命令行工具,基于 AST 开发,且方便集成 ci.Cli tool to lint your markdown file for Chin ...
最新文章
- vbs画动态爱心代码_前端必看之如何用CSS3画一个八卦和爱心
- simulink设计PID控制器及其封装详解
- 工作180:前端是业务需求理解
- php mysql.so 下载_Linux安装php-mysql提示需要:libmysqlclient.so.18()(64bit)的解决办法-Go语言中文社区...
- 罗永浩谈乔纳森离职:乔布斯才是苹果的灵魂设计师
- 让onclick响应Enter键
- 如何将mysql中的表传到elipse中_eclipse怎么连接到MySQL中的表!!!!!
- JavaScript错误与异常
- Qt中鼠标事件捕获与Qt对象事件过滤
- linux命令tar -xzvf等
- 大数据学习笔记60:构建Spark机器学习系统
- 揭穿内存厂家“谎言”,实测内存带宽真实表现
- 国产首发:上海川土微电子数字接口电源数字隔离芯片模拟芯片领导者
- 玩转微信营销和推广的10种方法和技巧
- Spark - Isotonic Regression 理论与实战
- 升级鸿蒙系统好不好用,昨天随手发了一个有关升级鸿蒙系统后的使用体会,没料到引发这么大的讨论。看来大家对这个话题关注度很高。作为一个普通消费者,... - 雪球...
- git+commitize+cz-customizable 代码 提交规范
- 绎维软件F-One获得B轮融资,华创资本领投,齐银基金跟投
- Caffe-Ristretto源码解读
- Google挥刀自宫给站长看
热门文章
- 传感器的组成、分类和典型的传感器
- 【无线攻防实战】小试无线安全
- python科学计算实验2
- 三轴桁架机械手控制系统 用于数控车床自动上下料 信捷触摸屏程序 可视化运动仿真
- Python表白代码合集:5种表白代码、比小心心、无限弹窗、520表白墙、抖音热门表白小软件、无套路表白
- matlab地质,[转载]matlab【人工智能项目】—ELM地质分类研究
- 中南大学c语言课程设计机票预订,求个C语言课程设计的教务管理系统。。。
- oracle查asm磁盘使用,如何检查ASM磁盘空间使用情况
- 王兴将出任王慧文创业公司董事/ 谷歌多年来故意推迟发布类ChatGPT/ 飞书回应齐俊元并未负责日本业务...今日更多新鲜事在此...
- 碎片模型matlab,Matlab在碎片拼接模型中的算法实现