文档库 最新最全的文档下载
当前位置:文档库 › 代码规范说明

代码规范说明

代码规范说明
代码规范说明

代码开发规

对于新增代码或者修改的代码应按代码规要求进行编写。

一、通用规

1.1 Kconfig文件:

格式:注释部分以#开头,空一格开始写注释容。

一级容“config”顶头开始

二级容开头空白处为一个制表符,相当于8个空格

三级容开头空白处为一个制表符再加两个空格,即比二级容缩进两个空格容:help说明部分必须有,为第三级容,需说明帮助信息,分段的容需空一行,每块config间空一行。

以文件系统fs下的Kconfig示例如下图1.1,‘□’代表一个空格,短横线‘-’所占一行代表一个空行:

图1.1

#

#□File system configuration

#

----------------------------------------------------------------

menu "File systems"

----------------------------------------------------------------

config EXT2_FS

□□□□□□□□tristate "Second extended fs support"

□□□□□□□□help

□□□□□□□□□□Ext2 is a standard Linux file system for hard disks.

□□□□□□□□□□To compile this file system support as a module, choose □□□□□□□□□□M here: the module will be called ext2. Be aware □□□□□□□□□□however that the file system of your root partition □□□□□□□□□□(the one containing the directory /) cannot be compiled □□□□□□□□□□as a module, and so this could be dangerous.

----------------------------------------------------------------

□□□□□□□□□□If unsure, say Y.

-----------------------------------------------------------------

config EXT2_FS_XATTR

□□□□□□□□bool "Ext2 extended attributes"

□□□□□□□□depends on EXT2_FS

□□□□□□□□help

□□□□□□□□□□Extended attributes are name:value pairs associated

□□□□□□□□□□with inodes by the kernel or by users (see the attr(5) □□□□□□□□□□manual page, or visit for □□□□□□□□□□details).

-----------------------------------------------------------------

□□□□□□□□□□If unsure, say N.

1.2头文件.h和.c文件规说明

格式:制表符宽度相当于8个空格

1.2.1文件首部注释

文件首部的注释用于说明文件信息,可选项目包括:

文件所属模块

主要函数实现

作者信息

信息

软件说明

以上容为可选信息,一个文件中不一定包含全部信息,由开发者根据重要性来确定。

注释格式必须是块注释形式,即:以/*行开头,以*/行结束,中间每一行前面均加一个*,每行的*号在竖直方向是对齐排列的,容部分距离行首的距离为4个字符,每段容间空一行;作者信息部分若有多个作者,则每个作者单列一行,并与其他作者信息对齐;信息按时间段可分行说明,保持部对齐。

示例如下图1.2,其中方框'□'代表一个空格:

图1.2

/*

□*□□NSA Security-Enhanced Linux (SELinux) security module

*

□*□□This file contains the SELinux hook function implementations.

*

□*□□Authors: Stephen Smalley,

* Chris Vance,

*

□*□□Copyright (C) 2001,2002 Networks Associates Technology, Inc.

□*□□Copyright (C) 2004-2005 Trusted Computer Solutions, Inc.

□*

*

□*□□This program is free software; you can redistribute it and/or

□*□□modify it under the terms of the GNU General Public License

□*□□version 2,as published by the Free Software Foundation.

□*/

1.2.2代码注释

新增或修改的代码重要部分可以添加注释。代码注释统一用’/*’和’*/’整块注释,注释容与’*’间用空格隔开,若注释是多行,则采用类似首部注释的格式,每行注释前面都有一个’*’。

(1)函数定义注释

注释可选项目:函数说明/参数信息/返回值信息/使用信息

对一个函数的注释,每项初始位置缩进要一致;可以缩进一个空格的或几个空格,核代码一般缩进一个制表符。注释项分段时段与段间空一行,如下图所示为函数iunique的注释,‘□’代表空格:

图1.3

/**

□*□□□□□□remove_inode_hash - remove an inode from the hash

□*□□□□□□inode: inode to unhash

□*

□*□□□□□□Remove an inode from the superblock.

□*/

void remove_inode_hash(struct inode *inode)

{……}

图1.4

/*

□*□> 0 if the file is in use

□*□= 0 if the file is not in use

□*□< 0 on failure

□*/

asmlinkage long sys_fcount(int op, void __user *data)

{……}

(2)代码块及单语句注释

对整块代码进行的注释放在整块代码前面,如对函数说明注释放在函数定义前面一行;注释与被注释代码的缩进保持一致;对单独一条语句的注释可以放在语句后面,同一性质的注释最好保持对齐。

图1.5

#include /* for Unix socket types */

……

图1.6

if (dname_external(dentry)) {

□□□□□□□□/*

□□□□□□□□* Both external: swap the pointers

□□□□□□□□*/

□□□□□□□□do_switch(target->d_https://www.wendangku.net/doc/9013371388.html,, dentry->d_https://www.wendangku.net/doc/9013371388.html,) ;

} else {

□□□□□□□□/*

□□□□□□□□* dentry:internal, target:external. Steal target's

□□□□□□□□* storage and make target internal.

□□□□□□□□*/

□□□□□□□□dentry->d_https://www.wendangku.net/doc/9013371388.html, = target->d_https://www.wendangku.net/doc/9013371388.html,;

□□□□□□□□target->d_https://www.wendangku.net/doc/9013371388.html, = target->d_iname;

}

1.2.3代码格式

空行:

代码块与代码块间至少空一行,同一类型的代码在不影响功能的情况下最好放在一块。如include语句,包含库文件中的头文件放在一起,包含非库文件的头文件放在一起,两部分中间空一行;不同函数定义间空一行。

在函数,简单变量声明放在一起,与其他语句间空行,复杂的变量如结构体、枚举类型的定义须占用多行时,单独作为一块,后面空一行;一般if语句、while语句、for语句等这些基本c语言语句类型后空一行,这些语句中嵌套的语句建议后面也空一行。

goto语句到达的代码块,代码块名称顶头开始。

缩进:

第一级代码顶头开始,处于同一级的代码缩进保持一致。后一级别的代码比前一级别的代码缩进一个制表符。

函数定义中参数分行列举时,后面的行应与第一个参数保持对齐;函数调用时出现参数需列多行的,也应与第一个参数保持对齐。

数组、结构体、枚举类型等占用多行时缩进一个制表符。

if、while、for、switch等语句的左花括号’{’,与圆括号语句在同一行,与’)’用一个空格隔开,不再另起一行。

空格:

双目运算符前后空一格;函数多个参数用逗号隔开后空一格

if、for、while、switch等基本语句中,关键词与左括号’(’间、右括号’)’与’{’间有一个空格。

图1.7

for□(p□=□p2;□p->d_parent□!=□p;□p□=□p->d_parent)□{

if□(p->d_parent□==□p1)

return 1;

}

二、kernel相关代码规

参照一通用规

部分的.h和.c文件规说明

三、glibc相关代码规

3.1头文件.h文件和.c文件规

3.1.1文件首部注释

与通用规1.2.1的差异在于:模块注释的中间行不需每行前面有*号,且注释容的缩进为三个空格(距离行首)。此代码库中,文件首部注释部分除了对各个文件简单说明外,其他如软件信息基本不变。

图3.1

/*□Copyright (C) 1995, 1997, 1998, 2000 Free Software Foundation,

□□□Inc.

This file is part of the GNU C Library.

Contributed by

□□□Ulrich Drepper , August 1995.

□□□The GNU C Library is free software; you can redistribute it

□□□and/or

modify it under the terms of the GNU Lesser General

□□□Public

License as published by the Free Software Foundation;

□□□either

version 2.1 of the License, or (at your option) any

□□□later version.

□□□The GNU C Library is distributed in the hope that it will be

□□□useful,

but WITHOUT ANY WARRANTY; without even the implied

□□□warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR

□□□PURPOSE. See the GNU

Lesser General Public License for more

□□□details.

□□□You should have received a copy of the GNU Lesser General

□□□Public

License along with the GNU C Library; if not, write to

□□□the Free

Software Foundation, Inc., 59 Temple Place, Suite

□□□330, Boston, MA

02111-1307 USA. */

3.1.2代码注释

(1)函数定义注释

函数定义注释与首部注释格式相同,此库中对函数定义的注释较少,注释项目可参考通用规1.2.2中(1)所述。

注意:此库中函数定义格式与通用格式有不同,将返回值类型单独列在了函数名前面行,如下图所示。

图3.2

(2)代码块及单语句注释

与通用规1.2.2中(2)的风格一致,缩进不同处见下面的代码格式。

3.1.3代码格式

代码格式与通用规 1.2.3中所不同的地方在于:下一级代码相对于上一级代码的缩进是两个空格,if,while,for等语句的左花括号‘{’另起一行缩进,如上图中所示。

/*□Call kernel with additional two arguments the syscall

□□□requires. */

int

reboot (int howto)

{

□□return ;

}

if□(k_dev□!=□dev)

□□{

□□□□__set_errno (EINVAL);

□□□□return -1;

□□}

四、bibautil库代码规

参照通用规

五、procps库代码规

procps源码本身有些地方的风格不一,新增和修改部分进行风格统一。

5.1头文件.h和.c文件规说明

5.1.1文件首部注释

文件首部注释部分与通用规 1.2.1的主要差别在于每行注释容与行首星号*间只有一个空格。

5.1.2代码注释

(1)函数定义注释

此库中对函数定义的注释较少,风格不一,现对于新增代码的函数定义注释统一参考通用规1.2.2中(1)所述。

注意:此库中函数的所有‘{’都未单独一行开始,直接跟在语句后面。如下图所示:

图5.1

static int compare_two_procs(const void *a, const void *b){

□□sort_node *tmp_list = sort_list;

□□while(tmp_list){

□□□□int result;

□□□□result = (*tmp_list->sr)(*(const proc_t *const*)a, *(const

proc_t *const*)b);

□□□□if(result) return (tmp_list->reverse) ? -result : result;

□□□□tmp_list = tmp_list->next;

□□}

□□return 0; /* no conclusion */

}

(2)代码块及单语句注释

新增代码统一规定与通用规1.2.2中(2)的风格一致,缩进不同处见下面的代码格式。

(3)代码格式

代码格式与通用规 1.2.3中所不同的地方在于:下一级代码相对于上一级代码的缩进是两个空格,如上图中所示。

六、pam代码库规说明

pam代码库源码风格也不一致,新增或者修改的代码建议与修改处的源码风格保持一致;全新增加的代码参考下面规。

6.1头文件.h和.c文件规说明

6.1.1文件首部注释

参考通用规1.2.1,文件首部注释部分与通用规1.2.1的主要差别在于每行注释容与行首星号*间不是八个空格而是一个空格。

6.1.2代码注释

(1)函数定义注释

参考通用规1.2.2中(1)函数定义注释,主要差别同样在于每行注释容与行首星号*间不是八个空格而是一个空格。

(2)代码块和单语句注释

参考通用规1.2.2中(2),

(3)代码格式

参考通用规 1.2.3,主要差别在于缩进大小不一定是一个制表符,与上下文保持一致,若无参考上下文则统一缩进四个空格。

七、audit-module代码库规说明

audit-module代码库中.c和.h文件在缩进方面采用缩进一个制表符的风格很统一,在注释容,空行与空格这类格式上可以参考通用规1.2。

Audit-module代码库中.l文件和.y文件函数定义注释以及代码块注释容和格式可以参考通用规1.2;.l文件中token标记对应的操作(即花括号的代码)应根据容调整对齐。八、coreutils代码库规说明

参考三glibc相关代码规

九、xen代码库规说明

十、policycoreutils代码库规说明

参考一通用规

十一、acl代码库规说明

参考一通用规

文件首部注释与通用规1.2.1的差异在于:模块注释的中间行不需每行前面有*号,且注释容的缩进为两个空格(距离行首)。

图11.1

/*

□□File: parse.c

□□(Linux Access Control List Management)

□□Copyright (C) 1999, 2000

□□Andreas Gruenbacher,

□□This program is free software; you can redistribute it and/or □□modify it under the terms of the GNU Lesser General Public

□□License as published by the Free Software Foundation; either

□□version 2 of the License, or (at your option) any later

□□version.

□□This program is distributed in the hope that it will be useful, □□but WITHOUT ANY WARRANTY; without even the implied warranty of

□□MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the □□GNU

Lesser General Public License for more details.

□□You should have received a copy of the GNU Lesser General

□□Public

License along with this library; if not, write to the

□□Free Software

Foundation, Inc., 59 Temple Place - Suite 330,

□□Boston, MA 02111-1307, USA.

□□*/

另一个差异在于函数定义时的返回值类型位置,应该参照图3.2中返回值类型格式。十二、audit代码库规说明

参考一通用规,差异之处在于:文件首部注释应该将图 1.2中两个空格变为一个空格,函数定义注释应将图1.3中注释行八个空格变为一个空格。

十三、openssh代码库规说明

参考一通用规,差异之处在于:文件首部注释部分应将图1.2中两个空格变为一个空格,函数定义注释部分也将图 1.3中注释行八个空格变为一个空格,函数返回值类型格式应参照图3.2中返回值类型格式

十四、shadow-utils代码库规说明

参考十二规说明

十五、smartcard代码库规说明

代码未修改

十六、epass2000代码库规说明

参考十二规说明

十七、zhongwei.linux代码库规说明

参考一通用规,差异之处在于:文件首部注释应该将图 1.2中两个空格变为一个空格,函数定义注释应将图1.3中注释行八个空格变为一个空格。

十八、yzw.anaconda代码库规说明

参考一通用规,差异之处在于:缩进为四个空格。

有效代码库:

代码库所在目录:/var/backup/serveroot/public-repo

其下四个子目录:apps,kernel,policy,services

apps中有效代码库:

liping.openssh.git

liping.shadow-utils.git

liping.smartcard.git

liping.epass2000.git

suxingwang.biba-utils.git

zhangyanping.procps.git

liuyan.nfsark-policy.git

yongbo.coreutils.git

yongbo.policycoreutils.git

yongbo.acl.git

yzw.anaconda.git

kernel中有效代码库:

yongbo.xen.git

zhongwei.linux.git

merged.linux.git

注:merged.linux.git 由wushu.linux.git yongbo.linux.git合并而成policy中有效代码库:暂无

services中有效代码库:

liping.glibc.git

yongbo.audit.git

代码库具体到开发人员:

liping:

apps:

liping.openssh.git

liping.shadow-utils.git

liping.smartcard.git

liping.epass2000.git

services:

liping.glibc.git

注:shadow里面主要是useradd\usermod\userdel,smartcard未作修改。

shiwei:

apps:

shiwei.pam.git

shiwei.audit-module.git

services:无

yongbo:

apps:

yongbo.coreutils.git

yongbo.policycoreutils.git

yongbo.acl.git

services:

yongbo.audit.git

kernel:

yongbo.xen.git

suxingwang:

apps:

suxingwang.biba-utils.git

zhangyanping:

apps:

zhangyanping.procps.git

liuyan:

apps:

liuyan.nfsark-policy.git

zhongwei:

apps:

yzw.anaconda.git

kernel:

zhongwei.linux.git

wushu:

apps:

wushu.bibautils.git

wushu.initscripts.git

wushu.sysvinit.git

wushu.util-linux.git

kernel:

merged.linux.git

services:

wushu.cups.git

C程序代码大全

//根据半径计算圆的周长和面积#include const float PI=3.1416; //声明常量(只读变量)PI为3.1416 float fCir_L(float); //声明自定义函数fCir_L()的原型 float fCir_S(float); //声明自定义函数fCir_S()的原型 //以下是main()函数 main() { float r,l,s; //声明3个变量 cout<<"r="; //显示字符串 cin>>r; //键盘输入 l=fCir_L(r); //计算圆的周长,赋值给变量l s=fCir_S(r); //计算圆的面积,赋值给变量s cout<<"l="<

C程序代码大全

C程序代码大全 This manuscript was revised on November 28, 2020

<=70) cout<<"Your grade is a C."<=60) cout<<"Your grade is a D."< main() { int n; cout<<"n="; cin>>n; if (n>=0 && n<=100 &&n%2==0) cout<<"n="< main() { int a,b,Max; .10 for(int i=1;i<=10;i++) cout<=1;j--) cout<

项目开发及编码规范

项目开发规范文档修订历史记录

1.简介 目的 1、用于规范指导开发组进行开发 2、便于成员间的沟通与交流。 3、有助于项目质量和稳定。 4、为后期维护提供支持 2. 项目开发流程 项目开发过程归纳分为以下步骤: 1. 建立SVN项目版本控制。包括文档,源码,Lib包等。 2. 了解需求,并对需求文档的书写。(见文档结构规则附录)。 3. 详细设计文档。(见文档结构规则附录)。 功能模块设计,重要模块的算法设计。 数据库设计等。 根据需求定义开发平台及环境。 4. 编码。 搭建开发平台,配置开发环境。 编码。 单元测试案例。 5. 书写软件安装手册文件,数据库脚本文件,以及注意事项(release notes)。 6. 交互测试组测试。根据测试组测试结果是否回归第4步(测试回归最好不要超过2 次)。 7. 测试通过,交付上线使用。 维护手册 使用手册

3. 代码规范 Java 代码规范 3.1.1 Java类名 类名可由:英文字母,数字,下划线组成。(数字,下划线不能够开头) 类名由一个或者多个单词组成。单词通常要求简洁明了达意。能够通过类名能够大致了解此类的作用和用途。 类名要求首字母大写,多个单词组成类名时,单词的首字母要求大写。 建议:类名不要过于简单或者太长。可以对单词采用简化的名称:入: Number 简化为:num 。 3.1.2 Java类结构 类仅作为数据结构,没有行为,他封装了一组或者相似的一些行为方法。所以一个类尽量功能单一,或者功能类似共有行为的。一个类不要过于庞大。 通常情况下: 一般逻辑类中应该有构造方法和main方法,main方法中应该有测试代码。 每个类应该有 toString() 方法。 3.1.2.1 包和引入语句 在多数Java源文件中,第一个非注释行是包语句。在它之后可以跟引入语句。 报名的定义全部是小写字母。具体定义依据项目而定。 引入包时候,同一类型的归纳到一块,用空行隔开。例如: import 3.1.2 类注释 Java类开头应该有相应的注释:类版本描述,作者签名,日期时间,公司备注,类的功能作用相关描述等。(详细查看:注释) 3.1.2.2 类成员变量 a) 类变量要求放在类的开始声明。一行声明一个。 b) 变量名称首字母要求小写。其他命名规则类似与类名。 c) static , final 类型的变量,字母要求全部大写。 d) 尽量在声明局部变量的同时初始化。 e) 避免局部变量和成员变量同名,覆盖了成员变量。 f) 尽量变量私有化,缩小变量的作用域。 3.1.2.3 类成员方法 a) 方法名命名规则类似于成员变量命名规则。 b) 成员方法尽量私有化。

程序代码注释编写规范

程序代码注释编写规范 为提高控制程序的阅读性与可理解性,现制定相关代码程序代码注释编写的编写规范。 一般情况下,源程序有效注释量必须在20%以上,注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。 常规注释有以下两种方式。 单行:以"//"符号开始,任何位于该符号之后的本行文字都视为注释。 多行:以"/*"符号开始,以"*/"结束。任何介于这对符号之间的文字都视为注释。 一、说明性文件 说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************* COPYRIGHT (C), MicTiVo International. Co., Ltd. File NAME: // 文件 Author: Version: Date: // 作者、版本及完成日期 DESCRIPTION: // 用于详细说明此程序文件完成的主要功能,与其他模块 // 或函数的接口,输出值、取值范围、含义及参数间的控 // 制、顺序、独立或依赖等关系 Others: // 其它内容的说明 Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明 1.... History: // 修改历史记录列表,每条修改记录应包括修改日期、修改 // 者及修改内容简述 1. Date: Author: Modification: 2. .. *************************************************/ 二、源文件头 源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。 示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************************ COPYRIGHT (C), MicTiVo International. Co., Ltd. FileName: Author:

数控编程G、M、T、S代码大全(精选.)

数控机床标准G、M代码 一.准备功能字G 准备功能字是使数控机床建立起某种加工方式的指令,如插补、刀具补偿、固定循环等。G功能字由地址符G和其后的两位数字组成,从G00—G99共100种功能。JB3208-83标准中规定如下表: 代码功能 作用范 围 功能 代码 功能作用范围功能 G00 点定位 G50 * 刀具偏置0/- G01 直线插补 G51 * 刀具偏置+/0 G02 顺时针圆弧插补 G52 * 刀具偏置-/0 G03 逆时针圆弧插补 G53 直线偏移注销 G04 * 暂停 G54 直线偏移 X G05 * 不指定 G55 直线偏移Y G06 抛物线插补 G56 直线偏移Z G07 * 不指 定 G57 直线偏移XY G08 * 加速 G58 直线偏移XZ G09 * 减速 G59 直线偏移YZ G10-G16 * 不指定 G60 准确定位(精) G17 XY平面选 择 G61 准确定位(中) G18 ZX平面选择 G62 准确定位(粗) G19 YZ平面选择 G63 * 该丝 G20-G32 * 不指定 G64-G67 * 不指定 G33 螺纹切削,等螺距 G68 * 刀具偏置,内角 G34 螺纹切削,增螺距 G69 * 刀具偏置,外角 G35 螺纹切削,减螺距 G70-G79 * 不指定 G36-G39 * 不指定 G80 固定循环注销 G40 刀具补偿/刀具偏置 注销 G81-G89 固定循环 G41 刀具补偿--左 G90 绝对尺寸 G42 刀具补偿-- 右 G91 增量尺寸 G43 * 刀具偏置--正 G92 * 预置寄存 G44 * 刀具偏置--右 G93 进给率,时间倒数 G45 * 刀具偏置+/+ G94 每分钟进给 G46 * 刀具偏置+/- G95 主轴每转进给 G47 * 刀具偏置-/- G96 恒线速 度 G48 * 刀具偏置-/+ G97 每分钟转数(主轴) G49 * 刀具偏置0/+ G98-G99 * 不指定 注:*表示如作特殊用途,必须在程序格式中说明二.辅助功能字M

程序代码注释编写规范

程序代码注释编写规范 XXX份公司

为提高控制程序的阅读性与可理解性,现制定相关代码程序代码注释编写的编写规范。 一般情况下,源程序有效注释量必须在20%以上,注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。 常规注释有以下两种方式。 单行:以"//"符号开始,任何位于该符号之后的本行文字都视为注释。 多行:以"/*"符号开始,以"*/"结束。任何介于这对符号之间的文字都视为注释。 一、说明性文件 说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************* COPYRIGHT (C), MicTiVo International. Co., Ltd. File NAME: // 文件 Author: Version: Date: // 作者、版本及完成日期 DESCRIPTION: // 用于详细说明此程序文件完成的主要功能,与其他模块 // 或函数的接口,输出值、取值范围、含义及参数间的控 // 制、顺序、独立或依赖等关系 Others: // 其它内容的说明 Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明 1.... History: // 修改历史记录列表,每条修改记录应包括修改日期、修改 // 者及修改内容简述 1. Date: Author: Modification: 2. .. *************************************************/ 二、源文件头 源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。 示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************************

C语言代码大全

------------------------------------------------------------------------摘自宋鲁生程序设计大赛 乘法口诀表 #include #include void main(void) { int i,j,x,y; clrscr(); printf("\n\n * * * 乘法口诀表* * * \n\n"); x=9; y=5; for(i=1;i<=9;i++) { gotoxy(x,y); printf("%2d ",i); x+=3; } x=7; y=6; for(i=1;i<=9;i++) { gotoxy(x,y); printf("%2d ",i); y++; } x=9; y= 6; for(i=1;i<=9;i++) { for(j=1;j<=9;j++) { gotoxy(x,y); printf("%2d ",i*j); y++; } y-=9; x+=3; } printf("\n\n"); }

用一维数组统计学生成绩 #include void main() { char SelectKey,CreditMoney,DebitMoney; while(1) { do{ clrscr(); puts("========================="); puts("| Please select key: |"); puts("| 1. Quary |"); puts("| 2. Credit |"); puts("| 3. Debit |"); puts("| 4. Return |"); puts("========================="); SelectKey = getch(); }while( SelectKey!='1' && SelectKey!='2' && SelectKey!='3' && SelectKey!='4' ); switch(SelectKey) { case '1': clrscr(); puts("================================"); puts("| Your balance is $1000. |"); puts("| Press any key to return... |"); puts("================================"); getch(); break; case '2': do{ clrscr(); puts("=================================="); puts("| Please select Credit money: |"); puts("| 1. $50 |"); puts("| 2. $100 |"); puts("| 3. Return |"); puts("=================================="); CreditMoney = getch(); }while( CreditMoney!='1' && CreditMoney!='2' && CreditMoney!='3' ); switch(CreditMoney)

java项目团队开发规范

项目团队开发规范

修订历史记录

目录 1引言 (6) 1.1 编写目的 (6) 1.2 预期读者 (6) 1.3 编写背景 (6) 2概述 (7) 2.1 目标 (7) 2.2 修改及完善 (7) 3详细规范 (7) 3.1 使用的工具 (7) 3.2 框架设计 (7) 3.3 包目录 (8) 3.4 编码规范 (10) 3.4.1 目的 (10) 3.4.2 依据 (10) 3.4.3 具体规范 (10) 3.4.3.1 编码风格 (10) 3.4.3.1.1 缩进 (10) 3.4.3.1.2 空格 (11) 3.4.3.1.3 对齐 (12) 3.4.3.1.4 空行 (12)

3.4.3.1.5 代码长度 (13) 3.4.3.1.6 行数 (13) 3.4.3.1.7 注释 (14) 3.4.3.2 代码效率 (17) 3.4.3.2.1 综述 (17) 3.4.3.2.2 具体实现 (17) 3.4.3.3 异常处理 (17) 3.4.3.3.1 处理CHECK 异常与UNCHECK异常 (17) 3.4.3.4 程序调试 (17) 3.4.4 日常交流 (18) 3.4.4.1 互相促进 (18)

1引言 1.1 编写目的 本文档作为项目团队开发规范的说明书,描述了项目开发过程中的使用的工具,框架,代码编写规范及注意问题,作为项目团队建设,开发及测试工作的依据。 1.2 预期读者 本文档的预期读者包括以下几类: ?项目组长 ?项目组全体成员 1.3 编写背景 根据公司现有的开发状况,决定组件稳定的项目开发团队,制定全体团队成员共识的开发规范,有助于提高项目开发的效率、项目团队整体水平的提升。

C语言编写规范之注释

1、头文件包含Includes 2、私有类型定义 Private typedef 3、私有定义Private define 4、私有宏定义 Private macro 5、私有变量 Private variables 6、私有函数原型Private function prototypes 7、私有函数Private functions 8、私有函数前注释 /****************************************************************************** * * Function Name : FSMC_NOR_Init * Description : Configures the FSMC and GPIOs to interface with the NOR memory. * This function must be called before any write/read operation * on the NOR. * Input : None * Output : None * Return : None ******************************************************************************* / 9、程序块采用缩进风格编写,缩进空格为4。 10、相对独立的程序块之间、变量说明之后必须加空行; 11、较长的字符(>80字符)要分成多行书写,长表达式要在低优先级操作符划分新行,操作符放在新行之首,新行要恰当缩进,保持排版整齐; 12、循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首; 13、若函数或过程中的参数较长,则要进行适当的划分。 14、不允许把多个短语句写在一行中,即一行只写一条语句。 15、if、for、do、while、case、switch、default等语句自占一行,且if、for、 do、while等语句的执行语句部分无论多少都要加括号{}。 16、对齐只使用空格键,不使用TAB键; 17、 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case 语句下的情况处理语句也要遵从语句缩进要求 18、 程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一 列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以 及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。 19、 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或

代码开发规范

代码开发规范 1 前言 1.1 为什么需要开发规范 编码规范对于程序员而言尤为重要,有以下几个原因: * 一个软件的生命周期中,80%的花费在于维护 * 几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护* 编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码 * 如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品 1.2 开发规范的作用 * 减少维护花费 * 提高可读性 * 加快工作交接 * 减少名字增生 * 降低缺陷引入的机会

2 命名规范 2.1 常量命名规范 2.1.1 类型 常量命名规范 2.1.2 说明 常量用于保存需要常驻内存中并且经常使用变化不多的数据,定义常量的名称的时候需要遵循望文知意的原则; 2.1.3 规则 1.全部为大写字母; 2.中间以“_”连接; 3.望文知意原则; 2.1.4 备注 代码中涉及到直接使用某个字符串或者其他基本类型的值时,建议定义成常量,避免多处直接使用同样的值作为参数。 2.1.5 举例 ?如:定义一个常量表示最小屏幕宽度的常量,则可以定义一个int类型的常 量,该常量可以命名为:“MIN_SCREEN_WIDTH“; ?其他举例: ?例如:static final int MIN_SCREEN_WIDTH = 4;( √) ?例如:static final int min_screen_width = 4;(×) ?例如:static final int minScreenWidth = 4; (×) ?例如:static final int WIDTH = 4;(×)

C 经典程序代码大全

C 经典程序代码大全 #include const float PI= 3.1416; //声明常量(只读变量)PI为 3.1416 float fCir_L(float); //声明自定义函数fCir_L()的原型 float fCir_S(float); //声明自定义函数fCir_S()的原型 //以下是main()函数 main() { float r,l,s; //声明3个变量 cout>r; //键盘输入 l=fCir_L(r); //计算圆的周长,赋值给变量l s=fCir_S(r); //计算圆的面积,赋值给变量s cout=0.0) //如果参数大于0,则计算圆的周长 z=2*PI*x; return(z); //返回函数值 } //定义计算圆的面积的函数fCir_S() float fCir_S(float x) { float z=- 1.0; //声明局部变量 if (x>=0.0) //如果参数大于0,则计算圆的面积 z=PI*x*x; return(z); //返回函数值 } /* Program: P1- 2.CPP Written by: Hap Date written: 02:11:10 */ #include void main(void) { double s1,s2,s3; s1= 1.5; /* 对变量s1赋值*/ cout main() { double r=

1.0; cout>r; //键盘输入 l=2* 3.1416*r; //计算圆的周长,赋值给变量l cout //包含iostream.h头文件 void main() { //输出字符常量.变量和字符串 char c1= A ; cout //包含iostream.h头文件 main() { //输入输出字符 char c; cin>>c; cout>n; cout>x; cout>n; cout>c>>n>>x; cout //包含iostream.h头文件 main() { //声明整型变量 int a,b; //从键盘上为整型变量赋值cout>a; cout>b; //整型数的算术运算 cout //包含iostream.h 头文件 main() { //声明变量,并初始化 int a=010,b=10,c=0X10; //以进制形式显示数据 cout>a; cout>b; cout>c; cout //包含iostream.h头文件 #include // iomanip.h头文件包含setprecision()的定义 main() { //float型变量的声明.输入.计算和输出 float fx,fy; cout>fx; cout>fy; cout>dx; cout>dy; cout //包含iostream.h 头文件 main() { //字符类型变量的声明 char c1= A ; char c2; //字符数据的运算及输出 c2=c1+32; cout>c1>>c2; cout //包含iostream.h头文件 main() { char c1= \a ,TAB= \t ; //阵铃一声 cout //包含iostream.h头文件 main()

程序源代码注释规范

程序注释规范说明 程序注释规范应包括以下三方面: 一、文件头部注释 在代码文件的头部进行注释,这样做的好处在于,我们能对代码文件做变更跟踪。在代码头部分标注出创始人、创始时间、修改人、修改时间、代码的功能,这在团队开发中必不可少,它们可以使后来维护/修改的同伴在遇到问题时,在第一时间知道他应该向谁去寻求帮助,并且知道这个文件经历了多少次迭代、经历了多少个程序员的开发和修改。 样本: /***************************************************** ** 作者:Liuchao ** 创始时间:2007-11-12 ** 修改人:Liuchao ** 修改时间:2007-11-12 ** 修改人:Liaochao ** 修改时间:2007-11-12 ** 描述: ** 主要用于产品信息的资料录入,… *****************************************************/ 二、函数、属性、类等注释 请使用///三斜线注释,这种注释是基于XML的,不仅能导出XML制作帮助文档,而且在各个函数、属性、类等的使用中,编辑环境会自动带出注释,方便你的开发。以protected,protected Internal,public声明的定义注释都建议以这样命名方法。 例如: ///

/// 用于从ERP系统中捞出产品信息的类 ///

class ProductTypeCollector { … } 三、逻辑点注释 在我们认为逻辑性较强的地方加入注释,说明这段程序的逻辑是怎样的,以方便我们自己后来的理解以及其他人的理解,并且这样还可以在一定程度上排除BUG。在注释中写明我们的逻辑思想,对照程序,判断程序是否符合我们的初衷,如果不是,则我们应该仔细思考耀修改的是注释还是程序了… 四、变量注释 我们在认为重要的变量后加以注释,说明变量的含义,以方便我们自己后来的理解以及其他人的理解,并且这样还可以在一定程度上排除BUG.我们常用///三斜线注释。 /// 用于从ERP系统中捞出产品信息的类 class ProductTypeCollector { int STData;/// … }

信息技术有限公司代码开发规范

xx信息技术有限公司代码开发规范 xx信息技术有限公司

代码开发规范 一、项目: IDE统一采用MyEclipse: 1.Tab policy设为“Spaces only”,Indentation size、Tab size均设为4 2.Maximum line width设为:140 3.java文件进行自动格式化 4.项目编码utf-8 二、代码: ?原则 1.数据结构应该只有公共变量;对象应该只有私有变量和公有函数; 2.一个类只做一类事、一个方法只做一件事 3.类、方法尽量简单、短小 4.宽度不超过140个字符 5.方法不超过40行,基本一屏高度 6.类不超过500行 7.尽量用好的命名代替注释 ?基本 1.统一采用log4j代替System.out.print、e.printStackTrace()等打印方式 2.流程语句必须用大括号 3.IO流必须用try finally关闭 ?命名 1.java基本命名规范 2.类为名词、属性为名词、方法为动词(+名词) 3.可以用2代替to,用4代替for,如string2int() 4.命名不许相互包含,如:get(),getOne()

5.不要采用getModel()、getModel1()、getModel2()数字方式命令 ?类型 1.对象属性必须为类,不能用String代替Number、Date等,不能使用基 本类型; 2.方法参数、返回均不许为Map(除非dao层) 3.泛型必须注明类型、不许使用List、List(除非dao层参数) 4.方法 5.方法参数不能超过4个,可以拆分方法或用类封装参数 6.Collection对象迭代采用foreach方式 ?分层 1.action里只有跳转 2.service层只有业务逻辑 ?jsp 1.放到WEB-INF/jsp目录下,不许直接访问jsp 2.不含java块、统一采用jstl 3.jsp不含style、script块 4.采用css、js代码 5.采用jQuery方式,监听事件,页面不含事件 6.图片写好width、height属性 ?dao层 1.尽量采用预处理方式 2.sql语句必须大写 3.一个dao类只操作一个Model 4.sql必须全部封装到dao层

CNC加工中心程序代码大全

1. 数控程序中字母的含义 O:程序号,设定程序号 N:程序段号,设定程序顺序号 G:准备功能 X/Y/Z :尺寸字符,轴移动指令 A/B/C/U/V/W:附加轴移动指令 R:圆弧半径 I/J/K:圆弧中心坐标(矢量) F:进给,设定进给量 S:主轴转速,设定主轴转速 T:刀具功能,设定刀具号 M:辅助功能,开/关控制功能 H/D:刀具偏置号,设定刀具偏置号 P/X:延时,设定延时时间 P:程序号指令,设定子程序号(如子程序调用:M98P1000) L:重复,设定子程序或固定循环重复次数(如:M98 P1000 L2,省略L代表L1)P/W/R/Q:参数,固定循环使用的参数(如:攻牙G98/(G99)G84 X_ Y_ R_ Z_ P_ F_) 2. 常用G代码解释 G00:定位或快速移动 G01:直线插补 G02:圆弧插补/螺旋线插补CW G03:圆弧插补/螺旋线插补CCW G04:停留时间或延时时间 如:G04 X1000(或G04 X1.0) G04 P1000表示停留1秒钟 G09:准确停止或精确停止检查(检查是否在目标范围内) G10:可编程数据输入 G17:选择XPYP 平面 XP:X 轴或其平行轴 G18:选择ZPXP 平面 YP:Y 轴或其平行轴 G19:选择YPZP 平面 ZP:Z 轴或其平行轴 G20:英寸输入 G21:毫米输入 G28:返回参考点检测 格式:G91/(G90) G28 X__ Y__ Z__ 经过中间点X__ Y__ Z__返回参考点(绝对值/增量值指令) G29:从参考点返回 G91/(G90) G29 X__ Y__ Z__ 从起始点经过参考点返回到目标点X__ Y__ Z__的指令(绝对值/增量值指令) G30 返回第2,3,4 参考点 G91/(G90) G30 P2 X__ Y__ Z__;返回第2 参考点(P2 可以省略。) G91/(G90) G30 P3 X__ Y__ Z__;返回第3 参考点

Java代码编写规范(参考)

命名规范: 1.所有的标识都只能使用ASCII字母(A-Z或a-z)、数字(0-9)和 下划线”_”。 2.一个唯一包名的前缀总是用全部小写的字母。 3.类名是一个名词,采用大小写混合的方式,每个单词的首字母大 写。 4.接口的大小写规则与类名相似。 5.方法名是一个动词或是动词词组,采用大小写混合的方式,第一 个单词的首字母小写,其后单词的首字母大写。 6.变量名的第一个字母小写,任何中间单词的首字母大写,变量名 应简短且可以顾名思义,易于记忆。避免单个字符的变量名,除非是一次性的临时变量。 7.常量的声明应该全部大写,每个单词之间用”_”连接。 注释规范: 1.注释尽可能使用”//”,对于所有的Javadoc的注释使用/***/,而 临时对代码块进行注释应尽量使用/**/。 2.所有的源文件都应该在开头有一个注释,其中列出文件名、日期 和类的功能概述。每个方法必须添加文档注释(main除外)。 3.每个属性必须加注释。 4.代码中至少包含15%的注释。 5.注释使用中文。

缩进排版规范: 1.避免一行的长度超过60个字符。 2.使用Eclipse源代码的格式化功能完成代码的缩进排版。 文件名规范: 1.一个Java源文件只能储存一个Java类。 2.文件名与Java类相同。 3.一个类文件不超过200行。 声明规范: 1.一行声明一个变量。 2.不要将不同类型变量的声明放在同一行。 3.只在代块的开始处声明变量。 4.所有的变量必须在声明时初始化。 5.避免声明的局部变量覆盖上一级声明的变量。 6.方法与方法直接以空行分隔。 语句规范: 1.每行至少包含一条简单语句。 2.在return语句中,返回值不使用小括号”()”括起来。 3.If月总是用{和}括起来。 4.在for语句的初始化或者更新子句中,避免因使用3个以上变量, 而导致复杂度提高。 5.当switch的一个case顺着往下执行时(因为没有break),通常 应在break语句的位置添加注释。