第一篇:代码编写的好习惯
2013-3-31
赵永华:格式之美 如何编写出专业型Java代码[1]
http:// 作者:赵永华 来源:希赛网 2008年6月19日进入社区格式之美:如何编写出专业型Java代码
作者简介:赵永华,男,威海职业学院信息工程系 高级工程师
假如你想成为职业程序员,那么你在编程时,就不仅应注重代码的实现方式,还应注意代码的编写格式。虽然,绝大多数用户无缘审读软件程序源代码,但程序员在编程时,无论内容还是形式都应力臻完美。本文以Java为例谈一些具体的细节,希望能得到大家认同或启迪。
一、为何要注重编程格式
今天,Java已成为软件开发的主流用语,笔者近来看到这样一个统计结果:在商业软件产品中,软件产品的后续成本中约80%用于维护开销。而软件维护往往很少由原创者担任,良好的源码编写风格有益于日后软件维护已成为诸软件商公认的事实。
当今,软件产品早己步入团队协作式开发模式,要成为一支优秀开发组的关键因素之一就是组员之间的密切交流,它体现在整个开发周期,从需求、计划、测试案例、设计,到算法、实现方式等软件工程各阶段当中。具体到每一个实现模块的源代码亦不例外。简言之,就是你在编写这段代码时应当让其他人清晰的了解这段代码“是什么”,当程序出错时,其他人能够从程序逻辑上迅速分析找到错误出处。
二、讲究细节
就程序应具有的“透明性”而言,开发小组应当采用一种共同的编写格式。比如Java,大家应当采用同一种IDEs(Integrated Developer Environments)。自2000年以来,Java开发所用IDE发展基本成型,开发人员一致采用的平台通常都是可免费下载的Sun公司的Netbeans IDE和Eclipse IDE,这两种工具都是优秀的“格式化”工具,有助于开发组形成良好的编程风格。如果有人至今还固执地采用那种原始的文本编辑器输入Java代码,未免显得愚钝。
在我们输入源代码时,一个容易忽略的问题是代码显示。传统的代码行通常限制的字符数是80,这主要是考虑到最低廉的文本终端80x25显示模式,这种思维在21世纪宽屏时代早已过时。今天的每行代码字符默认值达120。在输入代码时我们遇到的一个心理活动就是用空格还是制表符Tab,一个Tab等于几个空格,现在的答案是4个空格。
在Java中,从基本语法(比如while, do, for 等循环语句和类定义)开始就涉及到大括号,那么这些括号的摆放位置即便是专业程序也具有不同风格,这里例举如下:
// K&R风格
if(condition){
statement;
statement;
}//Allman风格if(condition){statement;statement;}//Whitesmiths Style风格if(condition){statement;statement;}//GNU风格if(condition){statement;statement;}
赵永华:格式之美 如何编写出专业型Java代码[2]
http:// 作者:赵永华 来源:希赛网 2008年6月19日进入社区
究竟哪种格式好?维基百科论坛对此曾有过较长时间的讨论,结果多数人倾向于前两种格式。如果留心的话,你会看到在Sun公司网站和手册中的代码都采用了K&R风格。一次在做项目时,多数同事都采用了Allman风格,当我发现这点时编写的代码总量已达数千行,此时如果为此而逐行修改不是怕耗时而是进度不允许,此时幸好我采用的Eclipse提供了格式配置工具遂即刻搞掂。流行的Java编辑器在输入左括号时都会自动出现对应的右括号。
在代码的控制结构中,假如只有一行执行语句,从语法上讲,此时的大括号可以省略,但依笔者的经验,此举其实不明智,试想假如在后续编程时需在控制结构中新增加语句时,对控制结构的界限即便是作者本人有时也会混淆,所以,更为稳妥的编写风格是即便是只有单行语句的控制结构也应当写入一对并不多余的大括号,样例如下:
...不好的习惯...if(condition)statement;...它可能造成的后果是...if(condition)statement;
statement;
尽管从语法上讲,将多条语句放在同一行上不会出错,但这亦属不良习惯,因为当他人对该语句进行复制/粘帖等编辑时容易搞错。另一方面,对于一行容不下的超长语句,那么续行应当有明显的凹进,并保证词组的完整性,其形式如下:
if(some really long condition that you need
to continue here)
{
statement;
statement;
}
再如:...com.acme.foo.project.data.YourObjectFactory objFactory = new com.acme.foo.project.data.YourObjectFactory();...当用到超长的条件表达式,有时为了逻辑清晰起见,我们应善于对其进行必要的分解,将一行分解为多行短句,例如:
...原来的代码语句是...if(value!= null && value.length()> 0 &&(errCount = 0 ||
isIgnorable(currentError)))
{
...statements...}
...将其分解为...boolean valueIsGood =(value!= null && value.length()> 0);
boolean noErrors =(errCount = 0 || isIgnorable(currentError));
if(valueIsGood && noErrors)
{
...statements...}
Java代码中的注释语句分为线型和块状,虽然笔者习惯使用前者,常用于描述一个变量的作用,但这种方式在网站论坛交流时会产生一种不良副作用,在网站上传代码时容易出现不连贯现象。防止出错的方法是,在上传代码时之前一定要预览显示结果。
在Java的声明机制中,应注意变量的声明位置,对于静态变量或常量,应当置于源码文件的顶部,这种风格来源于C语言。但Java对传统C的一种明显突破是,方法级变量是在需要时即时声明和初始化,其合理性在于我们不必劳神声明太多的类变量。
Java对类和变量的命名其实现在已形成了约定俗成:Types(类, 接口等)应当多用小写字母,单词间无空格,但每个单词首字母要大写,形如:SomethingLikeThis;非常量型变量的声明则多用小写字母,而且首字母要小写,单词间无隙,但从第二个单词起则冠以大写字母,形如somethingLikeThis。对于常量(Java中常用的对应关键字是final,也即'static')在命名时通常皆由大写字母组成,形如:SOMETHING_LIKE_THIS。所以,一段成熟的Java代码在命名和拼写时应当犹如以下样码:
class MyNeatClass
{
private int currentValue;
public static final String SOME_STRING_CONSTANT = “Blah blah”;
...public void doSomething()
{
...other statements......int count=0;
for(loop condition)
{
if(branch condition)
{
count++;
}
}
...}
}
新版Java出现的enum(“枚举”)类型,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。当我们声明一个enum类型时,定义通常是具有直观意义的字符串,比如:
enum MyFirstEnum
{
ALPHA,BETA,GAMMA,DELTA;
}
此外,Java编译器对于源文件的调用具有优先级标准,我们在编写代码时须遵循这一规则,具体次序为:项目所需的头文件,包声明语句,引入语句,type声明以及“extends”项及“implements”,类变量,类方法,内部类声明。
三、小结
本文从Java基本语法入手,列举了Java良好编程风格所应体现的各种规范和规则细节。也许有人会有小题大做之感,但笔者积多年的编码体会是,编写代码越多固然有利于编程技艺的提高,但规范的编程习惯将使写出的代码更便于分析和调试,这对于代码的优质运行将善莫大焉;一个软件项目的成功需要每个开发成员从自己做起,从每一行Coding开始。
第二篇:代码编写规范
代码编写规范
1、所有代码排版整齐,可以使用编程工具自带的排版功能;
2、代码缩进使用Tab键,不允许使用空格;
3、标示符的声明:修饰符与变量名之间留一空格;
4、用途相近的变量声明之间不加空行;用途相差很远的变量声明之间加一空行进行区分;
5、变量声明要集中,不允许分散在程序代码之间;
6、对于语意不明确的变量名要增加注释进行说明;
7、对于方法功能要进行注释说明;
对于功能非常简单的,并且可以直接从方法名称推断出其具体功能的方法,可以不加注释;
所有的方法注释必须准确;
8、方法的排列顺序要依照功能的排列顺序进行排列;
9、CSS样式代码编写顺序需要按照页面的排版顺序进行排列,不同的组件样式之间要以明显的“分隔符”进行分隔;
10、Html代码排版一定要规范,按照不同标签的层次关系进行适当的缩进排列,缩进使用Tab键,不允许使用空格;
11、Java代码的编写,首先进行变量声明,接下来是构造方法,在接下来是一些其他的功能方法,最后是变量的get/set方法。如果有嵌入类或嵌入接口的声明,应该放在文件最后,且需要增加注释详细说明;
12、JS代码的编写,首先是一些全局变量的声明,接下来是一些功能方法,最后是初始化代码。不同的方法之间要保留适当的空行,不允许使用alert。
第三篇:域代码编写总结
word域代码详解
域的基本操作
Ctrl+F9 插入域
Ctrl+Shift+F9把域转为纯文本 Shift+F9 切换为域代码显示
十个特殊指令(域开关)
1、数组a
2、括号b
3、平移d
4、分式f
5、积分i
6、列表l
7、重叠o
8、根号r
9、上下标s
10、框x
域代码: {EQ a(100,2,31)}
讲解: {EQ列表(100,2,31排成一列)}
可用参数:
al左对齐;ac居中;ar右对齐;con元素排成 n 列;vsn行间增加 n 磅;hsn列间增加n磅
al左对齐
域代码: {EQ aal(100,2,31)}
讲解: {EQ 列表左对齐(100,2,31)}
ac居中
域代码:{EQ aac(100,2,31)}
讲解:{EQ 列表居中对齐(100,2,31)}
ar右对齐
域代码:{EQ aar(100,2,31)}
讲解:{EQ 列表右对齐(100,2,31)}
con元素排成n列
域代码:{EQ aco3(10,2,31,0,1,0,14,3,55)}
讲解:{EQ 列表元素排成3列(10,2,31,0,1,0,14,3,55)}
vsn 行间增加n磅
域代码:{EQ aco3vs2(10,2,31,0,1,0,14,3,55)}
讲解:{EQ 列表元素排成3列行间增加2磅}
hsn 列间增加n磅
域代码:{EQ aco3vs2hs4(10,2,31,0,1,0,14,3,55)}
讲解:{EQ 列表元素排成3列行间增加2磅列间增加4磅}
域代码:{EQ b(a(100,2,31))}
讲解:{EQ 加括号(数组(100,2,31))}
可用参数:
左括号使用字符 lc;右括号使用字符 rc;左右括号都使用字符bc
lc* 左括号使用字符*
域代码:{EQ blc|(a(100,2,31))}
讲解:{EQ 加括号左括号使用字符|(数组(100,2,31))}
rc* 右括号使用字符*
域代码:{EQ brc|(a(100,2,31))}
讲解:{EQ 加括号右括号使用字符|(数组(100,2,31))}
bc* 左右括号都使用字符*
域代码:{EQ bbc|(a(100,2,31))}
讲解:{EQ 加括号左右括号使用字符|(数组(100,2,31))}
注意:如果指定的字符*是 {、[、(、或 <,Word 将使用相应的字符作为右括号。如果指定其他字符,Word将使用该字符作为相同的左右括号。默认括号为圆括号。
3、位移开关 d(): 控制 EQ 域之后下一个字符的位置。
空圆括号只跟在指令最后一个选项后面。
域代码:{EQ-d()A-}
讲解:{EQ-下一个字符后移 A-}
可用参数:
fon右边n磅;ban左边n磅;li为下一个字符前的空白添加下划线
fon 右边n磅
域代码:{EQ-dfo5()A-}
讲解:{EQ-下一个字符后移5磅 A-}
ban 左边n磅
域代码:{EQ-d ba7(A-)}
讲解:{EQ-下一个字符前移7磅}
li 为下一个字符前的空白添加下划线
域代码:{EQ 我 dfo12li()你 }
讲解:{EQ 我 下一个字符后移12磅,空白添加下划线 你}
4、分数开关 f(,): 创建分数,分子分母分别在分数线上下居中。
域代码:{EQ 18f(5,132)}
讲解:{EQ 18分数(分子,分母)}
无可用参数。
符号或默认符号及三个元素创建积分。
第一个元素是积分下限,第二个是上限,第三个是积分表达式。
域代码:{EQ i(a,b,3x+1 dx)}
讲解:{EQ 积分(下标a,上标b,表达式3x+1 dx)}
可用参数: 将符号更改为∑ 并生成求和公式su ;将符号更改为大写的 Π 并生成求积公式pr ;创建行内格式,积分限不在符号的上下,而在符号之右in ;将符号设置为固定高度的字符 fcc。
su 生成求和公式
域代码:{EQ isu(i=1,n,xi)}
讲解:{EQ 求和(下标a,上标b,表达式xi)
pr 生成求积公式
域代码:{EQ ipr(i=1,n,xi)}
讲解:{EQ 求积(下标i=1,上标n,表达式 xi)
in 积分限不在符号的上下,而在符号之右
域代码:{EQ iin(a,b,3x+1 dx)}
讲解:{EQ 积分积分限在符号之右(a,b,3x+1 dx)}
fcc将符号c设置为固定高度的字符
域代码:{EQ ifc设置为固定高度的字符in(a,b,3x+1)}
讲解:{EQ i符号改为。
in(a,b,3x+1)};将符号
vcc 符号高度与第三个元素高度一致
域代码:{EQ ivc
in(a,b,3x+1)}
讲解:加vc开关后,指定的符号自动放大
6、列表开关 l(): 使用任意个数的元素组成列表。
以逗号或分号分隔,这样就可以将多个元素指定为一个元素。在域中输入一个类似a,b的元素,不加括号时域会报错,加了括号又会显示出括号,列表开关可以解决类似问题。
域代码:{EQ isu(l(i,j)=1,l(n,m),xij)}
讲解:{EQ求和(加列表(i,j)=1,加列表(n,m),xij)}
无可用参数。
7、重叠开关 o(): 将每个后续元素置于前一个元素之上。
元素数目不限。元素之间以逗号隔开。可以配合上标开关使用
域代码:{EQ o(A,╳)}{EQ o(?,12)}
讲解:{EQ 重叠(A,╳)} {EQ 重叠(?,12)}
可用参数: 左对齐al;居中ac;右对齐ar
al左对齐
域代码:{EQ oal(ABC,sup10(︵))}
讲解:{EQ o重叠左对齐(ABC,sup10(︵))}
ac居中
域代码:{EQ oac(ABC,sup10(︵))}
讲解:{EQ 重叠o居中ac(ABC,sup10(︵))}
ar右对齐
域代码:{EQ oar(ABC,sup10(︵))}
讲解:{EQ 重叠o右对齐ar(ABC,sup10(︵))}
8、根号开关 r(,): 使用一个或两个元素绘制根号。
域代码:{EQ r(5,2a+b)}
讲解:{EQ 根号r(根指数5,被开方数2a+b)}
无可用参数。
9、上标下标开关 s(): 将元素放置为上标或下标字符。
每个 s 代码可有一个或多个元素,以逗号隔开。如果指定多个元素,则元素将堆叠起来并且左对齐
域代码:{EQ Cs(3,12)}
讲解:{EQ C上下标(上标3,下标12)}
可用参数: 在段落一行之上添加由 n 指定的磅数的空白;文字上移由 n 指定的磅数。默认值为 2 磅
upn()在段落一行之下添加由 n 指定的磅数的空白din();将单个元素相对相邻文字下移由 n 指定的磅数。默认值为 2 磅don()。
ain添加由 n 指定的磅数的空白
域代码:A{EQ Csai12(3)B}
讲解:A{EQ C上下标s行之上添加由12磅的空白ai12(3)B}
upn 文字上移由 n 指定的磅数(默认值为 2 磅)
域代码:{EQ Csup12(3)s(12)}
讲解:{EQ C上下标sup12(3)上下标s(12)}
din 在段落一行之下添加由 n 指定的磅数的空白
域代码:{EQ Csdi18(12)}A
讲解:{EQ C上下标s一行之下添加18磅的空白di18(12)}A
don 将单个元素相对相邻文字下移由 n 指定的磅数。默认值为 2 磅
域代码:{EQ Cs(3)sdo8(12)}
讲解:{EQ C上下标s(3)上下标s下移8磅do8(12)}
10、框开关 x(): 创建元素边框。
如果不带选项,则此代码在元素四周绘一个方框。
域代码:{EQ x(12345)}
讲解:{EQ 边框x(12345)}
可用参数: 在元素的上面绘制一个边框to ;在元素的下面绘制一个边框 bo ;在元素的左面绘制一个边框le 在元素的右面绘制一个边框ri
to上面绘制一个边框
域代码:{EQ x to(A∪B)}
讲解:{EQ 边框x 上边框to(A∪B)}
bo下面绘制一个边框
域代码:{EQ x bo(A∪B)}
讲解:{EQ 边框x 下边框bo(A∪B)}
le左面绘制一个边框
域代码:{EQ x le(A∪B)}
讲解:{EQ 边框x 左边框le(A∪B)}
ri左面绘制一个边框
域代码:{EQ x ri(A∪B)}
讲解:{EQ 边框x 右边框ri(A∪B)}
左右都加边框
域代码:{EQ x leri(A∪B)}
讲解:{EQ 边框x 左边框le右边框ri(A∪B)}
关于域的快捷键:
Ctrl+F9组合键——快速插入域定义符“{}”(注意:这个花括号不能用键盘输入)
Shift+F9组合键——显示或者隐藏指定的域代码
Alt+F9组合键——显示或者隐藏文档中所有域代码
F9键——更新单个域
上表中,选中每一个实例用鼠标右键单击,选“切换域代码”(或者直接按Shift+F9组合键),就可以看到域代码,再按Shift+F9组合键回到域结果。
我们在word2000中编辑文档时,有时会经常遇到要求输入数学公式的情况。虽然简单的加、减、乘、除等运算都可在键盘上直接输入,但遇到复杂的数学公式:如积分、开方、求和等符号时,就只能利微软的office套件中所带的工具“公式编辑器”来完成,但是在office套件的典型安装的过程中,并没有选择这个工具,那么有没有办法可以在word2000中直接输入这些符号呢?答案是肯定的,下面我们就来讲解通过word2000的EQ域的功能输入数学公式。
一、EQ域的基本使用格式:
{EQ Switches}
其中Switches用于指定如何使用其后跟随的括号中的元素建立公式,还可以用适当的开关选项来进行修改。EQ域的开关特别多,特别复杂,合理的组合可以产生各种各样的公式,下面我们来详细介绍各种开关的作用及使用方法及事例。
二、EQ域的开关及选项意义
1.数组开关:a(),可以在文档中绘制一个二维数组。还可以使用下面的选项来修改a 开关。
al 列内左对齐。
ac 列内居中对齐。
ar 列内右对齐。
con元素排成 n 列(默认值为 1)。
vsn行间增加 n 磅的垂直间距。
hsn列间增加 n 磅的水平间距。
2.括号开关:b(),用括号括住单个元素。
lcc 左括号使用字符 c。
rcc 右括号使用字符 c。
bcc 左右括号都使用指定的字符 c。
3.位移开关:d(),将下一个字符向左或右移动指定磅数。
fon()右边 n 磅。
ban()左边 n 磅。
li()为下一个字符前的空白添加下划线。
示例:{ EQ d fo10 li()} 显示为(前一段文字)__(后一段文字)
4.分数开关:f(,):可用于创建分数。
分子分母分别在分数线上下居中。如果系统使用逗号作为小数点,请用分号分隔两个元素。
5.列表开关:l(),将多个值组成一个列表,列表可作为单个元素使用。
列互开关可使用任意个数元素组成列表,以逗号或分号分隔,这样就可以将多个元素指定为一个元素。
6.重叠开关:o(),将每个后续元素打印在前一元素之上。
al 左对齐
ac 居中(默认值)
ar 右对齐
7.根号开关:r(,),使用一个或两个元素绘制根号。
8.上标或下标开关:s(),设置上下标。可将一个或多个元素设置为上标或下标。每个s代码可有一个或多个元素,以逗号隔开。如果指定多个元素,则元素将堆叠起来并且左齐。可用下面的选项在s开关之后放置单个元素。
ain()在段落一行之上添加由 n 指定的磅数的空白。
upn()将单个元素相对相邻文字上移由 n 指定的磅数。默认值为 2 磅。
din()在段落一行之下添加由 n 指定的磅数的空白。
don()将单个元素相对相邻文字下移由 n 指定的磅数。默认值为 2 磅。
9.方框开关:x(),在元素四周绘制边框。
to 元素之上。bo 元素之下。
le 元素左侧。ri 元素右侧。
10.积分开关:i(,),使用指定的符号或默认符号及三个元素创建积分。使用指定的符号及三个元素创建积分。第一个元素是积分下限,第二个元素是积分上限,第三个是积分表达式。可用下面的选项修改。
su 符号更改为大写的 ∑ 并生成求和公式。
pr 符号更改为大写的 Π 并生成求积公式。
in 创建行内格式,积分限不在符号的上下,而在符号之右。
fcc 将符号设置为固定高度的字符 c。
vcc 将符号设置为可变高度的字符 c。符号高度与第三个元素高度一致。
好了,上面详细地介绍了EQ域创建数学公式的每个开关及选项的意义,下面我们来看几个实例的应用。
三、EQ域实例创建
例
1、我们要创建如下的数学二元一次方程组:
1.先写出第一个方程的代码:{EQ r(3,x)+r(2,x)= r(6,y)}
2.再写出第二个方程的代码:{EQ f(2,x)+f(5,y)= f(10,x)}
3.将每个等式作为一个元素合并在一个域中,并增加a开关,使其排列在两行中域代码为:{EQ a al co1(r(3,x)+r(2,x)= r(6,y), f(2,x)+f(5,y)= f(10,x))
4.最后按照方程式的组成规则,在域代码中增加开关,为公式加入括号,并修改参数,生成这个二元方程组。最终代码为:{EQ b lc {(a al co1(r(3,x)+r(2,x)= r(6,y), f(2,x)+f(5,y)= f(10,x)))
例
2、创建如下的积分算式:
1.首先写出内部的根号的代码:{EQ r(2,x)}
2.其次增加分数开关的代码:{EQ f(r(2,x),5)}
3.最后增加积分开关,完成这个积分算式,代码为:{EQ i(200,100,f(r(2,x),5))dx}
第四篇:买方代码编写员岗位职责
1.买方代码专员报据各部门的申请及时准确地进行代码的查询、编制、维护等工作,从而保证资信报告购买、申请限额后续业务的顺利开展。1.买方代码查询和编制工作:占工作时间比例60%。
2.银行査询和代码编制工作:占工作时间比例30%。
3.处理各分支机构代码申请工作中遇到的问题,包括买方代码的信息维护和处理重码的工作:占工作时间比例5%。
第五篇:网站建设html+css代码编写时的注意事项
网站建设html+css代码编写时的注意事项:
1.浮动时记得清除浮动
在没有清楚浮动的情况下,会出现跑格。页面会发生变形。
2.有效利用padding和border
边界重合时,使用padding和border可以避免,可以防止上下div的“塌陷”,合理的控制上下div的间距。
3.记住“TRBL”写法
border,margin与padding的简写语法有特定顺序,从上方开始顺时针方向转动:top,right,bottom,left.所以margin:0 1px 3px 5px;的结果是上方无边界,右边1像素,以此类推。
4.不是零的值,都要指定单位
CSS需要对每个font,margin等各种值指定单位。
5.解决IE6的浮动元素的双倍边距问题
对一个div设置了float:left 和 margin-left:100px 在IE6中,这个bug就会出现。只需要多设置一个display就行了。
6.!important;
如果实在没有办法解决一些细节问题,可以用这个方法.火狐对于”!important”会自动优先解析,IE则会忽略。