电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

巧用JBuilderX代码美化工具


发布日期:2024/7/18
 

关键词 JBuilderX 代码格式化 代码美化 代码模板

引言

代码编写风格主要包括变量方法类等语言实体的命名和代码排版布局两方面评价代码质量的高低不仅取决于算法和数据结构代码排版布局也是一个不可或缺的方面随着现代软件规模的扩大团队开发在所难免好的代码编写风格增强了代码可读性和维护性提高了团队协作的效率

JBuilder被誉为java航空母舰级的开发工具目前的最高版本是命名为JBuilderX本文着重介绍如何在JBuilderX中美化代码格式化代码排版布局同时还将介绍JBuilderX加速代码编写的一些实用技巧

代码美化工具

市面上已经有很多代码美化的工具软件比较着名的有IndentastylejalopySourceFormatX 等其中SourceFormatX是一个多语言的代码美化工具但这些工具没有和开发工具很好的集成且不易操作功能也不够强大或不针对专门的java语言JBuildeX集成了一个强大的代码排版布局格式化工具在您编写好代码后可以通过它来美化您的代码它可以对代码做以下个方面的格式化工作

) 缩进java代码以{}划分的不同代码子域里层的域比外层的域需要缩进一些以使代码有层次感通过该工具可以定义里层相对外层代码缩进的空格数Tab键对应的空格数;

) 分行类定义方法定义以及控制代码如ifelse while try catch等都有对应的{}以组织其代码区域您可以指定{}是否另起一行;

) 空格指定在操作符小括号()中括号[]分号;等符号和操作代码之间是否需要空格;

) 空行允许您指定代码里哪儿需要加入空行以及空行数使不同的代码域之间区分得更加清晰;

) 换行对齐指定代码行的最大列数超过列数的代码行会被智能拆分成多行只有包含了操作符或逗号的代码行才可以被换行您可以指定换行点是在这些符号前面还是后面同时您还可以设定换行后多行的对齐方式;

) 代码生成规则控制自动事件句柄变量可视域及javaBean实例化的代码生成规则;

) import代码优化规则控制类中import代码引入的包和类如何生成及它们排序的先后顺序以优化import代码段

创建java工程后在主窗口左上角的工程面板的工程文件(xxxjpx)上点击鼠标右键按以下操作调出代码美化工具设置界面

选择Properties>在弹出窗口左边的树中选择Fomatting得到如图的操作窗口界面

educitycn/img_///gif >

窗口的右边有个页标签分别对应上面所谈到的个方面的代码设置每一个设置页左边对应若干个设置项右边是代码格式化的预览效果这样您就可以即时了解设置项是如何影响代码的排版布局下一节我将以具体的例子示范如何使用这个代码美化工具

下面是一个简单的java类代码其功能非常简单是将两个双精度数按要求相加或相减再将其结果值四捨五入为一个整数该例子只是为了演示代码格式化您大可不必追究代码的功能

package format;

import javalangMath;

import javautil*;

public class FormatSample {

private int i;

private int j;

public FormatSample() {}

public long add(double idouble jboolean isAdd){

double k ;

if(isAdd){k=i+j;}

else{k=ij;}

Systemoutprintln(today is +((new Date())toString())+the operation of+i+(isAdd?+:+)+j+ equals +k);}}

这段代码的排版布局非常差虽然只是一小段也会给阅读者造成晕旋效果这一小段代码在布局上的症结可以归纳为以下几项

)里外层代码域处于相同列没有用缩进形成层次布局

) ifelse的代码块的大括号{}和代码处于同一行

) 操作符和操作数之间没有用空格分开

) import代码块 和 class定义以及方法和方法代码块之间没有空行分隔挤成一团

) Systemoutprintln那行太长在IDE窗口中需要移动水平滚动条才可以看到隐藏的代码

) import 的代码行引入了过多的类FormatSample类只需要引入javautilDate这个类就可以了

对以上这些排版布局缺陷进行修正我们希望得到了以下版本的的代码

package format;import javautilDate;public class FormatSample

{

private int i;

private int j;

public FormatSample()

{

}

public long add(double i double j boolean isAdd)

{

double k;

if (isAdd)

{

k = i + j;

}

else

{

k = i j;

}

Systemoutprintln(today is + ( (new Date())toString())

+ the operation of + i

+ (isAdd ? + : + ) + j + equals + k);

return Mathround(k);

}

}

我们通过以下设置步骤来格式化FormatSample类的代码在设置代码格式化后必须在代码页面中点击鼠标右键选择Format All按钮格式化代码你也可以在项目窗口的树中选择项并点击右键选择Format package 来格式化整个项目的所有代码

educitycn/img_///gif>

) 使代码里外层代码区域形成层级缩进的布局

切换到代码美化工具设置界面的Basic标签页设置block indent的缩进空格数默认的里层代码比外层代码缩进个空格这对于使用拉丁语系的国家是比较适合的对于使用汉语的编程者应用调成个空格会更好一些因为个空格才对应一个汉字的长度

) 使代码块的正反大括号放置在新行中并且使对应的大括号在列上对齐

切换到Blocks的标签面将左边树的所有复选框都钩选这样所有大括号都会另起一行而且成对的大括号会在列上对齐通过在列上对应的成对大括号我们能够非常容易划分出代码块将所有大括号(除数组初始化的大括号外)另起一行放置比不另起一行放置的代码可读性更强我认为在下面的两种代码布局形式中右边的代码比左边的代码具有更好的可读性

if(true){

/**do sth*/

}

else{

/**do sth*/

} if(true)

{

/**do sth*/

}

else

{

/**do sth*/

}

) 操作符和操作数之间插入空格

切换到Spaces标签页该页面左边选项树从上到下分为个设置项组分别设置代码中分号;前后的空格小括号()和方法名关键词及里面嵌套小括号之间的空格逗号前后的空格小括号和中括号和其包含的代码之间的间距空格归为Others的一些杂项空格项目的设置通过点击设置项前的复选框右边的预览窗口将给出设置后的代码效果下图是我们代码格式化所用的设置

educitycn/img_///gif>

) 在代码不同部分之间插入空行

java语言的结构化相比于CPascal等其他语言的结构都要清晰严谨代码组织结构按先后顺序依次是包定义引用类加载类声明全局变量声明和方法声明可以在这些不同部分的代码间插入空行使代码不同部分看起来一目了然空行的设置在Blank Lines的标签页中在这个页面中你不但可以设置在哪儿插入空行还可以设置插入空行的数目如您可以在import代码部分和类定义代码部分之间加入两个空行全局变量定义代码之间可不插入空行方法和方法之间插入一个空行

) 让太长的代码行自动换行

代码编写窗口大小有限太长的代码行需要移动水平滚动条才可以查看将代码窗口滚动到右边时左边的代码又看不到了造成神龙见首不见尾的现象严重影响代码的可读性和阅读效率JBuilderX在Fomatting窗口的Wrapping标签页中提供了智能换行的设置功能您可以在Wrap after column中设置代码行的长度还可以设置代码行换行的依据符号代码行中的逗号操作符是代码行自动换行的依据符

JBuilderX在自动换行中提供的另一个精制的功能可以指定单行拆分成多行后这些行的对齐方式你可以指定多行头部和(对齐或和=对齐建议将两者都钩选格式化后例子中的Systemoutprintln()代码行变成了三行后两行代码和对齐

) 优化import代码块

切换到Formatting窗口的最后一个Imports标签页对import代码块做优化设置JVM会自动加载javalang*包所以例子中的import javalangMath;是多余的此外类中只用到javautil*包中的一个类javautilDate无需引入包中的其他类JBuilderX的import代码优化功能允许你设置一个阈值在当前类中引用到包中的类数目小于这个阈值时它就会将包名后的*替换成具体的类名您也可以通过钩选设置页面中的Always import classes复选框使import在任何时候都将包后的*替换成具体的类名(注意通过在代码窗口中点击右键选择Format All格式化代码不执行import代码的优化设置你可以在代码窗口中按Ctrl+I快捷键或用图的操作步骤来执行import代码的优化)

其他加速代码编写及排版布局的技巧

) 用模板加速代码的录入保证排版布局上的一致性

JBuilderX提供了丰富的代码模板通过

上一篇:用TableModelFree框架简化Swing开发

下一篇:JVM的垃圾回收机制详解和性能调优