Solidity
關於通過建構子與 setter 函式設置變數的意見?
目前在網上沒有找到任何關於這個的意見,所以在這裡徵求意見。
在 Solidity 合約的建構子中設置變數與沒有建構子並稍後通過 setter 方法設置這些變數的優缺點是什麼?
是否存在重大的天然氣權衡?這只是風格/意見的問題嗎?
欣賞任何想法:)
我認為這個問題本質上太籠統了,所以唯一可能的答案是“視情況而定”。
建構契約的正確方式取決於契約應該做什麼。部署是合約生命週期中的一個特定步驟。在那個階段需要發生什麼?
例如,讓合約實例處於未配置狀態可能是不可接受的。如果是這樣,那麼在建構子中執行它,這樣每個人都可以確定這種情況是不可能的。
無法在建構子中初始化使用代理系統的可升級合約。在這種情況下,選擇是明確的。
在實踐中,我會說每個參數都需要單獨查看。它應該由建構子設置嗎?它應該是可修改的嗎?它應該是不可變的嗎?
如果某些東西不應該被修改,實際上用建構子編碼會更容易 - 否則你必須制定邏輯以確保它不會發生兩次。你也可以用它
immutable
來節省汽油。希望能幫助到你。