代码布局的目的是显示出程序良好的逻辑结构,提高程序的准确性、连续性、可读性、可维护性。更重要的是,统一的代码布局和编程风格,有助于提高整个项目的开发质量,提高开发效率,降低开发成本。同时,对于普通程序员来说,养成良好的编程习惯有助于提高自己的编程水平,提高编程效率。因此,统一的、良好的程序布局和编程风格不仅仅是个人主观美学上的或是形式上的问题,而且涉及到产品质量,涉及到个人编程能力的提高,必须要引起重视。
【规则1-1-1】源代码文件(.java)的布局顺序是:包、import语句、类。
正例:
packagecom.sunsharp; importjava.awt.peer.CanvasPeer; import java.io.*; public class ClassName { }
【规则1-1-2】遵循统一的布局顺序来书写import语句,不同类别的import语句之间用空行分隔。
说明:package语句其后可跟import语句,而且与package间隔一个空行。import包的排列顺序为java开头的包在最前面,接下来是引自外部的包,再接下来是应用程序自身的包,即import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。
正例:
packagecom.sunsharp;
import java.util.ArrayList; //java自身的包
importjava.util.List;
importorg.apache.http.*; //第三方的包
importcom.snusharp.common.*; //程序自身的包
【规则1-1-3】if、else、else if、for、while、do,switch等语句独占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}。
说明:这样可以防止书写失误,也易于阅读。
正例:
if(varible1 < varible2) { varible1 = varible2; }
反例:
下面的代码执行语句紧跟if的条件之后,而且没有加{},违反规则。
if (varible1 < varible2) varible1 = varible2;
〖建议1-1-1〗源程序中关系较为紧密的代码应尽可能相邻。
说明:这样便于程序阅读和查找。
正例:
length = 10;
width = 5; // 矩形的长与宽关系较密切,放在一起。
strCaption = “Test”;
反例:
length = 10;
strCaption = “Test”;
width = 5;
【规则1-2-1】一般禁止使用制表符,必须使用空格进行缩排。缩进为4个空格。
说明:对于利用Eclipse等编程工具的,可以设置TAB键为4个空格代替。消除不同编辑器对制表符处理的差异。
【规则1-2-2】程序的分界符‘{’和‘}’应独占一行,‘}’同时与引用它们的语句左对齐。{ }之内的代码块使用缩进规则对齐。
说明:这样使代码便于阅读,并且方便注释。
do… while语句可以例外,while条件可与 } 在同一行。
正例:
voidfunction(intvar) { while (condition) { doSomething(); // 与{ }缩进4格 } //与引用它们的模块左对齐 }
反例:
voidfunction(intvar){ while (condition) { doSomething(); } }
【规则1-2-3】多维的数组如果在定义时初始化,按照数组的矩阵结构分行书写。
正例:
int[][] number= { {1,1, 1}, {2, 4, 8}, {3, 9, 27}, {4, 16, 64} };
【建议1-2-1】相关的赋值语句等号对齐。
正例:
width = 50;
length = 20;
height = 40;
【规则1-3-1】不同逻辑程序块之间要使用空行分隔。
说明:空行起着分隔程序段落的作用。适当的空行可以使程序的布局更加清晰。
下列情况应该总是使用空行:
l 一个源文件的两个片段(section)之间
l 类声明和接口声明之间
l 常量声明区域之后
l 方法声明之前
l 方法内的局部变量和方法的第一条语句之间
l 一个方法内的两个逻辑段之间,用以提高可读性
正例:
voiddoSomething() { Connection con = null; //数据库连接 booleanreturnParameter = false; //返回 //空一行 //if代码的注释 if (reconsign == null) return false; }
反例:
voiddoSomething() { Connection con = null; //数据库连接 booleanreturnParameter = false; //返回 //if代码的注释 if (reconsign == null) return false; }
【规则1-3-2】一元操作符如“++”、“--”、“!”、“~”、(类型)等前后不加空格。“[]”“.”这类操作符前后不加空格。
正例:
!value ~value ++count number[i] = 5; box.getWidth();
【规则1-3-3】多元运算符和它们的操作数之间至少需要一个空格。
说明:空格的多少根据上下文调整。
正例:
value = oldValue;
total + value;
number += 2;
【规则1-3-4】方法名之后不要留空格。
说明:方法名后紧跟左括号‘(’。
【规则1-3-5】‘(’向后紧跟,‘)’、‘,’、‘;’向前紧跟,紧跟处不留空格。‘,’之后要留空格。‘;’不是行结束符号时其后要留空格。
正例:
例子中的凵代表空格。
for(i凵=凵0;凵i凵<凵MAX_BSC_NUM;凵i++) { doSomething(width,凵height); }
【规则1-4-1】长表达式(超过120列)要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐。
说明:
断行方法:
1. 在逗号后断行
2. 在操作符前断行
3. 在低优先级操作符处断行
对齐方法:
1. 将新行与同一级别的先前行的表达式的起始端对齐。
2. 条件表达式的续行在第一个条件处对齐。
3. for循环语句的续行在初始化条件语句处对齐。
4. 函数调用和函数声明的续行在第一个参数处对齐。
5. 赋值语句的续行应在赋值号处对齐。
6. 如果上述规则导致代码排列混乱或代码左边界少于两个缩进,可用两倍缩进替代。
下面是一些断行方法调用的示例:
正例:
someMethod(longExpression1,longExpression2, longExpression3, longExpression4, longExpression5); var = someMethod1(longExpression1, someMethod2(longExpression2, longExpression3));
下面是两个断行算术表达式例子,第一个是优选方法,因为断行出现在括号表达式之外,属于较高级别的断行。
正例:
longName1 = longName2 * (longName3 + longName4 - longName5)
+ 4 * longname6; //允许的断行方法
反例:
longName1 = longName2 * (longName3 + longName4
-longName5) + 4 * longname6; //应该避免的断行方法
下面是两个缩排方法的例子,第一个是传统的方式,第二个例子中如果采用传统方式缩排将导致第二行和第三行右边出现太多空白,因此,采用8个空格符替代。
//传统的缩排方法,第二行与第一行的括号对齐。
正例:
void someMethod(intanArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) { ...//你代码的位置 }
//由8个空格符来替代与括号对齐的方法,以避免第二行、第三行出现太多的空格符
正例:
private static synchronized horkingLongMethodName(int anArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) { ...//你代码的位置 }
对于if语句的行封装通常使用8空格规则,因为传统的4空格缩排方式使得有些语句容易被忽略掉,使if语句体难以理解。例如:
反例:
//不允许使用下面的缩进方法
if ((condition1 && condition2)
|| (condition3&& condition4)
||!(condition5 && condition6))
{ //不好的缩进
doSomethingAboutIt(); //这样对齐的缩进方式很容易让阅读的人忽略掉这一行
}
正例:
//宜采用下面的缩进方法(分成三行的情况)
if ((condition1 && condition2)
| (condition3&& condition4)
||!(condition5 && condition6))
{|
doSomethingAboutIt();
}
//或使用下面的缩进方法(分成二行的情况)
正例:
if ((condition1 && condition2) || (condition3 && condition4)
||!(condition5 && condition6))
{
doSomethingAboutIt();
}
对于三重表达式,有三种方式可以对它进行换行缩排:
正例:
//单行的情况
alpha = (aLongBooleanExpression) ? beta : gamma;
//分成两行的情况,第二行的冒号与第一行的问号对齐。
alpha = (aLongBooleanExpression) ? beta
: gamma;
//分成三行的情况,第二行的问号和第三行的冒号都与第一行的括号对齐
alpha = (aLongBooleanExpression)
? beta
: gamma;
【下载地址】
百度网盘链接:https://pan.baidu.com/s/1DgthEa8hNquj2p3GaHSISg
提取码:pv34
相关文章
使用-JFreeChart来创建基于web的图表
XStream使用文档
WebService发布过程及常见问题
webpack实战入门进阶调优分享
weblogic调优参数及监控指标
weblogic节点管理
weblogic管理控制台概述
weblogic-部署和启动
WebLogic-Server-性能及调优-调优-Java-虚拟机
Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。
FlashFXP绿色版网盘下载,附激活教程 1781
FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具
Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1564
firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ
navicat for mysql中文绿色版网盘下载 1623
Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq
火车头采集器(旗舰版)绿色版网盘下载 1707
火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA
Photoshop(CS-2015-2023)绿色中文版软件下载 1823
安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64