鍍金池/ 問答/Java  C  C++  HTML/ 對于中間變量是否越詳細越好

對于中間變量是否越詳細越好

寫代碼的是否是否中間變量寫的越多越好
比如一個點:

public class Point{
    int x; // x坐標
    int y; // y坐標
    
    int isExist;  // 這個點是否有效,對x,y做判空可得
    int quadrant; // 所在象限, 對x,y 計算可能
    
    巴拉巴拉就
}

對于isExist ,quadrant這樣的計算所得中間變量,是否有必要創(chuàng)建 ,還是說,對于這樣一個實例,描述的越詳細越好

回答
編輯回答
短嘆

不鼓勵這種做法,這種做法導致同一個數(shù)據(jù)狀態(tài)存在多個副本,這會引入額外的維護成本,并且容易導致狀態(tài)不一致問題,引起很多麻煩。

一開始寫代碼,并不需要刻意做這樣的優(yōu)化。
提前做這種犧牲代碼可維護性、增加復雜度的優(yōu)化,壞處大于好處。
因為它一定會帶來一些壞處,但并不確定是否真的帶來一些好處。

你覺得它會提升性能,這只是理論上,實際運行起來到底提升多少,有多少收益。
和編譯優(yōu)化、業(yè)務流程、硬件平臺都有很大的關系。

后續(xù)如果是真的需要優(yōu)化代碼,可以通過性能分析工具找出瓶頸點,有針對性的優(yōu)化。
并且優(yōu)化方式也不一定是增加幾個“中間變量”這種方式。

2018年6月10日 01:47
編輯回答
蟲児飛

如果中間變量使用特別頻繁,則可以考慮使用以獲得更好的效率,如果使用頻度很低,則可以考慮為方法臨時計算獲得。
此外,對于可以一次性獲得多個中間變量,這時采用中間變量比多次方法更有利(即使使用頻率稍微少也是值得的)。

2017年3月27日 03:23
編輯回答
爛人

如果使用頻繁,就可以創(chuàng)建中間變量,就是用空間換時間嘛

2018年6月4日 11:18
編輯回答
真難過

要考慮到一個狀態(tài)的本質,
像isExist明顯是依賴于x和y的,適合寫成public方法,這樣通過p.isExist()獲取狀態(tài),在坐標修改后也會獲得正確的狀態(tài),
這時候就不建議再有一個代表isExist的變量,因為這個變量只在isExist()方法中使用,而且還是返回值

2017年6月5日 01:40