我正在處理一個遺留的scala代碼庫,像往常一樣,在不觸及不同部分的情況下修改代碼是相當困難的。
我的一個新需求是根據一些輸入引數做出一些決定。問題是,這些決定將在執行程序中的不同點做出。因此,要么我將所有這些引數封裝在一個案例類實體中,并將其傳遞給對方。但這意味著我將不得不修改多個方法的簽名,而我希望盡可能地避免這種做法。
另一種方法是創建一個包含所有這些輸入引數的全域物件,并在執行程序中的不同點進行訪問。這在 Scala 中是一個好的方法嗎?
uj5u.com熱心網友回復:
不,使用全域可變變數來傳遞 "隱藏 "引數不是一個好主意,在Scala中不是,在任何其他編程語言中也不是。它使代碼難以理解和修改,因為一個函式的行為現在取決于先前呼叫了哪些函式。而且它非常脆弱,因為你可能忘記在呼叫函式之前設定其中一個全域引數,這意味著它將使用之前存盤在那里的任何值。這就是那種看起來可以作業多年的東西,當你修改程式中完全不相關的部分時,它就會崩潰。
我怎么強調都不為過:不要使用全域可變變數,就這樣。解決辦法是振作起來,改變這些方法的簽名。根據不同的細節,依賴注入在你的特定情況下可能有幫助,也可能沒有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/309110.html
標籤:
