6.4replace temp with query

你的程序以一个临时变量保存某一表达式的运算结果。

动机:

临时变量的问题在于:它们是暂时的,而且只能在所属函数内使用。由于临时变量只在所属函数内可见,所以它们会驱使你写出更长的函数,因为只有这样才能访问到需要的临时变量。如果把临时变量替换为一个查询,那么同一个类中的所有函数都将可以获得这份信息。

可能需要先使用split temporary variable或separate query from modifier使情况变得简单一些,然后再替换临时变量。如果你想替换的临时变量是用来收集结果的,就需要将某些程序逻辑复制到查询函数去。

做法:

找出只被赋值一次的临时变量。

=》如果某个临时变量被赋值超过一次,考虑使用split temporary variable将它分割成多个变量。

将该临时变量声明为final。

编译。

=》这可确保该临时变量的确只被赋值一次。

将对该临时变量赋值之语句的等号右侧部分提炼到一个独立函数中。

=》首先将函数声明为private,

=》确保提炼出来的函数无任何副作用,也就是说该函数并不修改任何对象内容。如果它有副作用,就对它进行separate query from modifler

你可能感兴趣的:(6.4replace temp with query)