管理代码里的“方法链”和嵌套调用

本文探讨了方法链和嵌套调用这两种编程技巧在实际应用中的优缺点,包括提高编码效率的同时带来的可读性和调试难度增加等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码越写越多,其实好多东西都会是一个积累和反思的过程,在较早前看过一篇文章,是描述有关某第三方包的一些代码特性的问题,就想起来了这个问题,“方法链”(Method Chain),先不说别的,看看下面一段代码:
java 代码
  1. public void method(){   
  2.     SomeComponent component = new SomeComponent();   
  3.     component.setProp1().setProp2().setProp3();   
  4. }  

上面的代码演示了一段典型的方法链的支持,某个组件SomeComponent的setProp的方法族都有方法链的特性,我们通常的set方法会定义为:public void setProp(Prop prop); 但是在方法链的支持中,则采用了:public OwnerType setProp(Prop prop);的方式,即set方法族会返回自身的引用,这样就对一组连续的set方法提供了相当的便利,我们不用再一行行地使用对象引用来点出我们的set方法。

从写程序的角度来说,在有代码自动填充支持的IDE环境下,这样的设计将大大提高打字效率,并且这样的方法链将标志处在这个阶段,我们在连续地操作同一个对象。不过,冗长的set方法链,有时候看起来也是个非常头大的东西。比如我们可能对某些set方法有一些必要的注释,这个时候,采用方法链就需要仔细考虑了。

其实,由方法链的调用,衍生想到另外一个问题,就是方法的嵌套调用,还是代码先:

java 代码
  1. public void method0(){   
  2.     Object o1 = getO1();   
  3.     Object o2 = getO2(o1);   
  4.     Object o3 = getO3(o2);   
  5. }   
  6.   
  7. public void method1(){   
  8.    Object o3 = getO3(getO2(getO1)));   
  9. }  

嵌套调用是种很难形容的方式,他会让你的代码行数和本地变量数有极大的削减,但是又会让你的程序的可读性和可调式性变得越来越差。临时变量会申请出额外的存储空间,而方法的嵌套则会导致方法栈的累积,好像从空间效率上都没法做很好的对比。

每个人写代码的风格不同,有些人在方法的命名习惯用一些缩写甚至是无意义的字符,这就让方法本身从名称上感觉难以理解,如果这个时候再大量使用嵌套调用和方法链,那么这段程序将完全不可阅读,同时,我们在调试程序的时候,也只能够把断点设置在嵌套调用的最外层或者方法链的起始端,如果这个时候方法链很长,或者嵌套很深,对调试程序将是一个极大的挑战。

所以说,在一定程度上(方法有良好的命名、嵌套深度不大(3-5层)、方法链长度不长(5-7)),这些简略的代码编写手法都还是可以推荐使用的,不过,过犹不及。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值