Contract-Design
為什麼我們需要在同一個合約中使用私有變數 getter?
我最近從 Openzepplin 閱讀了一份智能合約,其中包含以下程式碼
uint256 private certainAmount; function getCertainAmount() public returns (uint256){ return certainAmount; } function usesCertainAmount() public { uint256 calculation = getCertainAmount() + 200; /***/ }
正如您所看到的,即使在同一個契約中,他們也在使用私有函式的 getter,我似乎不明白為什麼?
主要原因是如果這些是函式,您可以更輕鬆地在繼承契約時覆蓋它們。如果它們只是函式中的變數,您將需要重寫整個函式 - 現在您只需要重寫變數部分。
這是 OpenZeppelin 的一個非常常見的模式:它們使他們的合約“可插入”,因此您可以輕鬆地在某些地方注入您自己的功能。正因為如此,他們有時甚至有空的函式實現。