Java代码格式
东汉大臣陈蕃有一则这种故事,“一屋不扫何以扫天下”,寓意来表明一个大丈夫,假设连自己的居室都不能打扫干净,怎么胸怀天下。《代码整洁之道》就是来劝诫我们程序猿写出更优秀的代码,而“格式”一章也恰巧给我们举出了非常多原则,以供我们写出更加规整的代码。
格式的目的
好的代码格式,让人赏心悦目,而且随着版本号的更迭。让你可以随心所欲的进行变更。而不是每次都痛苦不堪。
垂直格式
类文件的行不应该成千上万行,应尽量保持短小。当然这点非常难做到,我们习惯于在一个类中完毕多种多样的功能,以至于我们非常难将类进行模块化。
使用空行进行切割
人的眼睛对段落有着非常强烈的直观意识。假设一篇文章从上倒下一直没有切割,那你就会立马离开。
public static BaseBiz getBaseBizBeansByName(String bizName) {
  return factory.getBean(bizName, BaseBiz.class);
 }
 /**
 * @Description: 依据银行类型获取相应的预签约业务类
 */
 public static BasePerSign getBasePerSignByName(String bankType) {
  return factory.getBean(bankType + "PerSign", BasePerSign.class);
 }
 /**
 * @Description: 依据银行类型获取相应的出金业务类
 */
 public static BaseBiz getMoneyOutByBeanName(String bankType) {
  return factory.getBean(bankType + "MoneyOut", BaseBiz.class);
 }保持好方法之间的空白行会让代码总体看起来非常舒服。空白行帮我们识别出来不同的概念。
垂直方向上的靠近
private static Map<String, String> configs = new HashMap<String, String>();
 private static final String CONFIG_FILE = "conf/hxbconfig.properties";
 private static String path = HXBConfig.class.getClass().getResource("/").getPath() + CONFIG_FILE;
 private static Properties prop = new Properties();以上是一串相关的代码。彼此之间紧密相连。假设你把这四行代码放置在不同的位置。那就非常糟糕了。
垂直距离
在读一个类文件时,往往须要上下跳动,那么这个时候,假设本来紧密相连的内容跳跃的幅度特别大,此时就easy让人认为沮丧,由于你要不停的浪费记忆来保持对这些跳转有所意识。
变量声明要尽量出如今其使用的地方。本地变量应该在函数的顶部出现。
for (int i = 0; i < bankDailyPreSettlements.size(); i++) {public static Message startPerSignBiz(Message msg) throws IOException {
  StringBuilder msgs = new StringBuilder();
  // 对银行进行归类
  for (String bank : getList()) {
   if (bankmemList.size() > 0) {
    BasePerSign biz = SpringUtils.getBasePerSignByName(bank);
    logger.info(biz + "開始启动");
    // 进行数据操作
    msgs.append(biz.dealMembers(bankmemList));
   }
  }实体变量应在类的顶部声明。由于在设计非常好的类中,实体变量会被非常多方法共用。
以下是来自百度的一段解释:
实例(体)变量是和类变量相相应的
类变量也叫静态变量。也就是在变量前加了static 的变量;
实例(体)变量也叫对象变量。即没加static 的变量;
那么他们的差别到底是什么呢?
类变量和实例变量的差别在于:类变量是全部对象共同拥有,当中一个对象将它值改变,其它对象得到的就是改变后的结果。而实例变量则属对象私有。某一个对象将其值改变,不影响其它对象
public class HXBMoneyIn extends BaseBiz {
 private static Logger logger = Logger.getLogger(HXBMoneyIn.class);
 @Autowired
 private MoneyTransferService moneyTransferService;
 @Override
 public Message dealMsg(Message msgParam) {
  logger.info("华夏银行接收到入金请求...");moneyTransferService事实上就是一个实体变量,所以放在类的顶部。当然对于logger这种静态变量,也是要放在类顶部。
相关函数
若某个函数调用了另外一个函数,则两者应该放在一起,另外调用函数应该放在被调用函数的上方。
public void callAuctionMatch() {
  excuteAuctionMatch();
 }
 private void excuteAuctionMatch() {
  logger.info("启动白盘商品撮合...");
 }概念相关的代码应该在一起。
public static BaseBiz getMoneyOutByBeanName(String bankType) {
  return factory.getBean(bankType + "MoneyOut", BaseBiz.class);
 }
public static BaseBiz getMoneyInByBeanName(String bankType) {
  return factory.getBean(bankType + "MoneyIn", BaseBiz.class);
 }横向格式
反正Robert的观点和我刚好吻合,由于现如今显示屏已经变宽,所以行宽保持在120个字符最佳。
水平方向上的格式,我如今基本上使用eclipse的默认格式。
对于水平方向上的区隔与靠近、水平对齐、缩进、空范围。我认为eclipse做的还不错。我仅仅改进了两点: 
1. 120个字符 
2. switch格式
团队规则
这一点非常重要。我要求我的团队成员遵守我的编码格式。这样两人的代码在SVN库中就不会发生格式的冲突。
我也来提供一小段我自己的代码格式。我认为还不错
public class StartFrontprocessorServer {
 private static Logger logger = Logger.getLogger(StartFrontprocessorServer.class);
 public static void main(String[] args) {
  Constants.init();
  if (ExcheUtil.canRunForExchange(ExchangeUtil.PRIVILEGE_RESULT_TYPE)) {
   Spriils.getSpringContext();
   logger.info("前置机监听交易端请求业务server開始启动");
   Frontener listener = new FrontToBHListener(new CloseHandler() {
    @Override
    public void Close() {
    }
   });
   listener.start();
   // 依据当前交易所配置的银行结算类型进行监听器载入
   SettleBanager.startThread("Listener");
   logger.info("前置机V1.0.0.1.20140521");
  } else {
   logger.info("系统已经被禁用。无法使用!
");
  }
 }
}Java代码格式的更多相关文章
- Eclipse中更改默认java代码格式【转】
		在写代码时常常有2种代码样式习惯,如下图.由于一直习惯了第一种代码格式,而看第二种代码格式时感觉代码很乱,总找不到“{ }”对称的感觉.Eclipse自动格式化代码的快捷方式是Ctrl+Shift+F ... 
- java 代码格式(转)
		//转至博客:http://developer.51cto.com/art/201202/320317.ht /** * Java编码格式个人推荐,参考JDK源码和Hyperic HQ源码(原spri ... 
- 《阿里巴巴Java开发手册》代码格式部分应用——idea中checkstyle的使用教程
		<阿里巴巴Java开发手册>代码格式部分应用--idea中checkstyle的使用教程 1.<阿里巴巴Java开发手册> 这是阿里巴巴工程师送给各位软件工程师的宝典,就像开车 ... 
- Java代码格式化规范实践总结
		目标说明 统一良好的代码格式规范可以有效提升开发团队之间的「协作效率」,如果不同的开发团队或者开发人员采用不同的代码格式规范,那么每次Format代码都会导致大量的变化,在Code Review及Me ... 
- 如何使用java代码进行视频格式的转换(FLV)
		如何使用java代码进行视频格式的转换(FLV) 一,前言 在给网页添加视频播放功能后,发现上传的视频有各种格式,那么就需要将他么转换成FLV,以很好的支持在线视频播放. 公司一直在使用中,配合使用, ... 
- java优雅注释原则和代码格式列举
		一.java的三种注释类型 单行注释:// ...... 块注释:/* ...... */ 文档注释:/** ...... */ 二.指导原则 注释不能美化糟糕的代码,碰到糟糕的代码就重新写吧. 用代 ... 
- 关于Java开发过程中质量提升-1代码格式配置
		在项目开发维护中,编码规范作为开发规范的一个组成部分,是十分重要和必须的,它不仅仅是为了提高开发效率,也有利于降低后期维护开发的成本.编码规范的根本目的就是要让不仅代码可以一目了然,也可以很容易的理解 ... 
- 怎样编写高质量的java代码
		代码质量概述 怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍.也请有过代码质量相关经验的朋友 ... 
- JDBC——Java代码与数据库链接的桥梁
		常用数据库的驱动程序及JDBC URL: Oracle数据库: 驱动程序包名:ojdbc14.jar 驱动类的名字:oracle.jdbc.driver.OracleDriver JDBC URL:j ... 
随机推荐
- javascript中判断变量时变量值为 0 的特殊情况
			有时候我们在js中会直接判断变量是否存在值,下面列举一些情况: var a = 0; var b = 1; var c = ' '; var d; console.log( a ? 1 : null) ... 
- OC学习——OC中的@protocol(@required、@optional)、代理设计模式
			一.什么是协议? 1.协议声明了可以被任何类实现的方法 2.协议不是类,它是定义了一个其他对象可以实现的接口 3.如果在某个类中实现了协议中的某个方法,也就是这个类实现了那个协议. 4.协 ... 
- 《Java编程思想》笔记 第十五章 泛型
			1 泛型 “泛型”意思就是适用于许多类型. 使用泛型的目的之一: 指定容器持有什么类型,让编译器确保正确性,而不是在运行期发现错误. 这个容器可以看成是有其他类型对象作为成员的类,而不单单只是JDK中 ... 
- HDU-3221
			Brute-force Algorithm Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ... 
- tcpdump学习(2):基本使用
			安装好tcpdump之后,运行tcpdump: 1. tcpdump -D 获取网络适配器列表,以下是在Ubuntu上获取到的结果: root@holmesian-laptop:~# tcpdump ... 
- mybatis-config.xml的解释(zz)
			<!-- xml标准格式 --><?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ... 
- sqlalchemy源代码阅读随笔(4):url。py 阅读
			在_to_string中,有 _rfc_1738_quote(text): 这个函数.这个主要是遵循 RFC 1738的规则.对传入的信息(主要是用户名或者密码)进行格式匹配.其代码就一行: retu ... 
- 计蒜客 1460.Ryuji doesn't want to study-树状数组 or 线段树 (ACM-ICPC 2018 徐州赛区网络预赛 H)
			H.Ryuji doesn't want to study 27.34% 1000ms 262144K Ryuji is not a good student, and he doesn't wa ... 
- asp.net中利用JSON进行增删改查中运用到的方法
			//asp.net中 利用JSON进行操作, //增加: //当点击“增加链接的时候”,弹出增加信息窗口,然后,在窗体中输入完整信息,点击提交按钮. //这里我们需要考虑这些:我会进行异步提交,使用j ... 
- [BZOJ 3152] 组合子逻辑
			Link: BZOJ 3152 传送门 Solution: 喜闻乐见,gyz出的语文题,题意要看半小时 题意:使用最少的括号将序列分割,对于每个括号中的序列,设最左边的数为$num$,序列中元素个数为 ... 
