对于中间变量是否越详细越好

写代码的是否是否中间变量写的越多越好
比如一个点:

public class Point{
    int x; // x坐标
    int y; // y坐标
    
    int isExist;  // 这个点是否有效,对x,y做判空可得
    int quadrant; // 所在象限, 对x,y 计算可能
    
    巴拉巴拉就
}

对于isExist ,quadrant这样的计算所得中间变量,是否有必要创建 ,还是说,对于这样一个实例,描述的越详细越好

阅读 2.9k
4 个回答

不鼓励这种做法,这种做法导致同一个数据状态存在多个副本,这会引入额外的维护成本,并且容易导致状态不一致问题,引起很多麻烦。

一开始写代码,并不需要刻意做这样的优化。
提前做这种牺牲代码可维护性、增加复杂度的优化,坏处大于好处。
因为它一定会带来一些坏处,但并不确定是否真的带来一些好处。

你觉得它会提升性能,这只是理论上,实际运行起来到底提升多少,有多少收益。
和编译优化、业务流程、硬件平台都有很大的关系。

后续如果是真的需要优化代码,可以通过性能分析工具找出瓶颈点,有针对性的优化。
并且优化方式也不一定是增加几个“中间变量”这种方式。

要考虑到一个状态的本质,
像isExist明显是依赖于x和y的,适合写成public方法,这样通过p.isExist()获取状态,在坐标修改后也会获得正确的状态,
这时候就不建议再有一个代表isExist的变量,因为这个变量只在isExist()方法中使用,而且还是返回值

如果使用频繁,就可以创建中间变量,就是用空间换时间嘛

如果中间变量使用特别频繁,则可以考虑使用以获得更好的效率,如果使用频度很低,则可以考虑为方法临时计算获得。
此外,对于可以一次性获得多个中间变量,这时采用中间变量比多次方法更有利(即使使用频率稍微少也是值得的)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题