Contract-Design

為什麼我們需要在同一個合約中使用私有變數 getter?

  • September 16, 2021

我最近從 Openzepplin 閱讀了一份智能合約,其中包含以下程式碼


   uint256 private certainAmount;
   

   function getCertainAmount() public returns (uint256){
       return certainAmount;
   }

   
   function usesCertainAmount() public {
       uint256 calculation = getCertainAmount() + 200;
       /***/
   }

正如您所看到的,即使在同一個契約中,他們也在使用私有函式的 getter,我似乎不明白為什麼?

主要原因是如果這些是函式,您可以更輕鬆地在繼承契約時覆蓋它們。如果它們只是函式中的變數,您將需要重寫整個函式 - 現在您只需要重寫變數部分。

這是 OpenZeppelin 的一個非常常見的模式:它們使他們的合約“可插入”,因此您可以輕鬆地在某些地方注入您自己的功能。正因為如此,他們有時甚至有空的函式實現。

引用自:https://ethereum.stackexchange.com/questions/110030