阅读《代码整洁之道》总结,java中级面试题库

本文讨论了如何通过减少卫语句嵌套、提取异常处理逻辑和使用Lombok简化getter/setter等技术来提高Java代码的可读性和维护性,同时介绍了ApacheCommons系列组件在Java开发中的应用。还强调了提供系统学习资源对于Java开发者技能提升的重要性。
摘要由CSDN通过智能技术生成

正例采用卫语句减少了嵌套,但是并非所有场景都适合这样改写。如果不适合,可以将关联性高的逻辑抽取成一个独立的方法减少嵌套。

抽离try/catch

大家有没有见过一个超长的方法,从头到尾被一个try/catch照顾着?博主经历过的项目中,这种不负责的写法比比皆是。并非每行代码都会抛出错误,只要将会抛出错误的业务放在一个独立的方法即可。

看看反例:

// 获取个人信息

Private UserDTO getUserDTO(Integer userId)

{

try {

//获取基本信息

… 此处写了10行

//获取最近的一次订单信息.

…此处写了20行

// 获取钱包、可用优惠券张数等

…此处写了20行

}catch (Exception e) {

logger.error(e);

return null;

}

}

return userDTO;

}

看看正例:

// 获取个人信息

Private UserDTO getUserDTO(Integer userId)

{

//获取基本信息

UserDTO userDTO= getUserBasicInfo(userId);

//获取最近的一次订单信息

userDTO.setUserLastOrder(getUserLastOrder(userId));

// 获取钱包、可用优惠券张数等

userDTO.setUserAccount(getUserAccount(userId));

return userDTO;

}

Private UserDTO getUserBasicInfo(userId);

Private UserLastOrder getUserLastOrder(userId);

Private UserAccount getUserAccount(userId){

try{ // TODO } catch( Exception e) { //TODO}

封装多个参数

如果方法参数将超过3个,建议放在类中包装起来,否则再增加参数时,由于语义的强耦合会导致调用方语法错误。在后台管理中的分页查询接口,常常会有很多查询参数,而且有可能增加,封装起来是最好的。

看看反例:

// 分页查询订单 6个参数

Public Page queryOrderByPage(Integer current,Integer size,String productName,Integer userId,Date startTime,Date endTime,Bigdecimal minAmount ,Bigdecimal maxAmount) {

}

看看正例:

@Getter

@Setter

Public class OrderQueryDTO extends PageDTO {

private String productName;

private Integer userId;

private Date startTime;

private Date endTime;

private Bigdecimal minAmount ;

private Bigdecimal maxAmount;

}

// 分页查询订单 6个参数

Public Page queryOrderByPage(OrderQueryDTO orderQueryDTO) {

}

第三方库

Lombok

Lombok组件通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法

举例如下:

@Setter 注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。

@Getter 使用方法同上,区别在于生成的是getter方法。

@ToString 注解在类,添加toString方法。

@EqualsAndHashCode 注解在类,生成hashCode和equals方法。

@NoArgsConstructor 注解在类,生成无参的构造方法。

@RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。

@AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。

@Data 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

常规写法:

Public class Order {

private Integer userId;

public Integer getUserId() {

return userId;

}

public void setUserId(Integer userId) {

return this.userId = userId;

}

}

采用Lombok:

@Getter

@Setter

Public class Order {

private Integer userId;

}

Apache Commons系列

Apache Commons系列组件给我们提供了关于字符串、集合、IO操作等工具方法。这些组件是个大宝库,提供了不少轮子。

| 组件 | 介绍 |

| — | — |

| beanUtils | JavaBean进行各种操作,克隆对象、属性等等 |

| codec | 处理常用的编码方法的工具类包,例如DES、SHA1、MD5、Base64等. |

| collections | java集合框架操作 |

| configuration | java应用程序的配置管理类库 |

| io | io工具的封装 |

| lang | Java基本对象方法的工具类包 如StringUtils、ArrayUtils等等. |

| logging | 提供的日志接口 |

| net | 提供了客户端和服务器端的数据验证框架 |

看看例子:

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

最后

如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!

AcOgMCCh-1710435833534)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-uu7mfJE0-1710435833534)]

最后

如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!

[外链图片转存中…(img-M6gcbSZR-1710435833535)]

[外链图片转存中…(img-eHoWweVs-1710435833535)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值