博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java代码格式
阅读量:5809 次
发布时间:2019-06-18

本文共 3624 字,大约阅读时间需要 12 分钟。

东汉大臣陈蕃有一则这种故事,“一屋不扫何以扫天下”,寓意来表明一个大丈夫,假设连自己的居室都不能打扫干净,怎么胸怀天下。《代码整洁之道》就是来劝诫我们程序猿写出更优秀的代码,而“格式”一章也恰巧给我们举出了非常多原则,以供我们写出更加规整的代码。

格式的目的

好的代码格式,让人赏心悦目,而且随着版本号的更迭。让你可以随心所欲的进行变更。而不是每次都痛苦不堪。

垂直格式

类文件的行不应该成千上万行,应尽量保持短小。当然这点非常难做到,我们习惯于在一个类中完毕多种多样的功能,以至于我们非常难将类进行模块化。

这里写图片描写叙述

使用空行进行切割

人的眼睛对段落有着非常强烈的直观意识。假设一篇文章从上倒下一直没有切割,那你就会立马离开。

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
configs = new HashMap
(); 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("系统已经被禁用。无法使用!

"

); } } }

转载于:https://www.cnblogs.com/clnchanpin/p/7268011.html

你可能感兴趣的文章
从零学React Native之14 网络请求
查看>>
P2P平台众信金融上线半年交易额近10亿
查看>>
完全面向于初学者的Node.js指南
查看>>
亿赛通开启电子文档安全领域智能化新时代
查看>>
《并行计算的编程模型》一2.6.1 编译和运行示例
查看>>
中国联通云管理研究组组长徐雷:运营商SDN发展策略
查看>>
如何把本地文件包含变为远程文件包含漏洞
查看>>
利用General框架进行三层架构开发
查看>>
容器与DevOps 被称为天作之合的7个原因
查看>>
EMC发布云存储基础架构解决方案Atmos
查看>>
无锡物联网企业达到2000家 营业收入接近2100亿元
查看>>
2015年大数据顶尖职位必备的9项技能
查看>>
双11过后 普惠科技成阿里集团新关注点
查看>>
我国迈入物联网2.0时代 2020年市场将超过四万亿
查看>>
亚信安全提醒:APT防范要当心“水坑”
查看>>
云计算环境下的身份安全管理
查看>>
大数据和物联网:在制造业、医疗保健和智慧城市的成功应用
查看>>
《并行计算的编程模型》一3.6.2 fence和quiet:RMA操作排序
查看>>
爱奇艺龚宇:用情怀搭建VR真生态
查看>>
看我如何使用数据格式混淆来绕过WAF进行攻击?
查看>>