Erlang中的單一賦值如何導致更可讀的代碼(引用透明)?Erlang中的單個賦值如何導致更易讀的代碼?
1
A
回答
2
編碼很簡單,調試很難。代碼使調試瑣碎。 - Barry Rountree
通過一次賦值,可以確保該變量在整個函數體中具有一個值。它使調試更容易。您可以隨時進行調試和記錄。你可以很容易地發現它獲得價值的地方等等。這不明顯嗎?
1
關於功能程序的目標是避免side effects。簡而言之,這是代碼的一個屬性,每次執行時其行爲都完全相同。這就是爲什麼shared state is being avoided以及爲什麼開發者經常對厄蘭的process dictionary皺眉頭。純粹的功能語言不會有任何副作用。各種功能語言試圖形式化產生副作用的代碼,例如Haskell。
顯然,如果賦值給一個變量的值可以改變,那麼執行兩次的同一個函數會根據變量中包含的值產生不同的結果。在從一個對象上執行的函數的OOP輸出中產生一個依賴於該對象中包含的狀態的結果。因此,如果不知道對象中包含的狀態,則無法正確理解代碼。
使用單一賦值時,輸出不依賴於狀態,而僅依賴於傳遞給函數的參數。這在崩潰的情況下特別有用,並且您有堆棧跟蹤或記錄函數的調試輸出。您可以讀取代碼並將值分配給每個變量,因爲知道如果再次執行相同的代碼,則不會更改這些值。
相關問題
- 1. 使我的代碼更易讀
- 2. Javascript中的複合賦值導致NaN
- 3. 簡單的JavaScript代碼中賦值運算符的替代?
- 4. 代碼更容易
- 5. 如何讓此Python代碼更易於使用和可讀?
- 6. 如何使字符串段更容易閱讀源代碼
- 7. 如何重構此C#代碼以使其更易於閱讀?
- 8. 在更易讀的代碼中轉換javascript一行
- 9. 如何調試Erlang代碼?
- 10. 如何與Python代碼中的Erlang代碼進行通信?
- 11. 導致NumberFormatException的Servlet代碼
- 12. 閱讀javascript中代碼清單的值在代碼隱藏
- 13. 賦值部分如何在Angular2的以下代碼中工作?
- 14. Android如何從手錶中獲取變量的賦值代碼
- 15. onBackPressed導致代碼
- 16. memset導致std :: string賦值崩潰
- 17. 爲Label.Text賦值最終導致StackOverflowException
- 18. 此代碼如何導致死鎖?
- 19. 如何在Erlang中有效地讀取STDIN中的數千行代碼?
- 20. 爲什麼這個簡單的代碼會導致EXC_BAD_ACCESS?
- 21. python中的簡單代碼導致意外的行爲
- 22. 在反編譯的代碼中導致問題導致問題
- 23. Resharper的代碼建議使代碼不易讀?
- 24. 這個C代碼塊如何解析爲整數賦值?
- 25. 代碼中的交易
- 26. 如何在Perl代碼中解決「標量賦值中未初始化的值」?
- 27. 更改代碼會導致下拉菜單中的選項不出現
- 28. WPF的新手 - 在代碼中更新TextBlock導致NullReferenceException
- 29. Lua - 簡單的迭代器賦值?
- 30. 單個可選賦值的布爾型字段和值賦值