Skip to content

Commit

Permalink
Use prefix underscore for state variables and no underscore for para…
Browse files Browse the repository at this point in the history
…meters (#1282)

* Role tests (#1228)

* Moved RBAC tests to access.

* Added Roles.addMany and tests.

* Fixed linter error.

* Now using uint256 indexes.

* Removed RBAC tokens (#1229)

* Deleted RBACCappedTokenMock.

* Removed RBACMintableToken.

* Removed RBACMintableToken from the MintedCrowdsale tests.

* Roles can now be transfered. (#1235)

* Roles can now be transfered.

* Now explicitly checking support for the null address.

* Now rejecting transfer to a role-haver.

* Added renounce, roles can no longer be transfered to 0.

* Fixed linter errors.

* Fixed a Roles test.

* True Ownership (#1247)

* Added barebones Secondary.

* Added transferPrimary

* Escrow is now Secondary instead of Ownable.

* Now reverting on transfers to 0.

* The Secondary's primary is now private.

* Improve encapsulation on ERC165

* Improve encapsulation on ERC20

* Improve encapsulation on ERC721

* Add tests, use standard getters

* fix tests

* Fix lint

* MintableToken using Roles (#1236)

* Minor test style improvements (#1219)

* Changed .eq to .equal

* Changed equal(bool) to .to.be.bool

* Changed be.bool to equal(bool), disallowed unused expressions.

* Add ERC165Query library (#1086)

* Add ERC165Query library

* Address PR Comments

* Add tests and mocks from #1024 and refactor code slightly

* Fix javascript and solidity linting errors

* Split supportsInterface into three methods as discussed in #1086

* Change InterfaceId_ERC165 comment to match style in the rest of the repo

* Fix max-len lint issue on ERC165Checker.sol

* Conditionally ignore the asserts during solidity-coverage test

* Switch to abi.encodeWithSelector and add test for account addresses

* Switch to supportsInterfaces API as suggested by @frangio

* Adding ERC165InterfacesSupported.sol

* Fix style issues

* Add test for supportsInterfaces returning false

* Add ERC165Checker.sol newline

* feat: fix coverage implementation

* fix: solidity linting error

* fix: revert to using boolean tests instead of require statements

* fix: make supportsERC165Interface private again

* rename SupportsInterfaceWithLookupMock to avoid name clashing

* Added mint and burn tests for zero amounts. (#1230)

* Changed .eq to .equal. (#1231)

* ERC721 pausable token (#1154)

* ERC721 pausable token

* Reuse of ERC721 Basic behavior for Pausable, split view checks in paused state & style fixes

* [~] paused token behavior

* Add some detail to releasing steps (#1190)

* add note about pulling upstream changes to release branch

* add comment about upstream changes in merging section

* Increase test coverage (#1237)

* Fixed a SplitPayment test

* Deleted unnecessary function.

* Improved PostDeliveryCrowdsale tests.

* Improved RefundableCrowdsale tests.

* Improved MintedCrowdsale tests.

* Improved IncreasingPriceCrowdsale tests.

* Fixed a CappedCrowdsale test.

* Improved TimedCrowdsale tests.

* Improved descriptions of added tests.

*  ci: trigger docs update on tag  (#1186)

* MintableToken now uses Roles.

* Fixed FinalizableCrowdsale test.

* Roles can now be transfered.

* Fixed tests related to MintableToken.

* Removed Roles.check.

* Renamed transferMintPermission.

* Moved MinterRole

* Fixed RBAC.

* Adressed review comments.

* Addressed review comments

* Fixed linter errors.

* Added Events tests of Pausable contract (#1207)

* Fixed roles tests.

* Rename events to past-tense (#1181)

* fix: refactor sign.js and related tests (#1243)

* fix: refactor sign.js and related tests

* fix: remove unused dep

* fix: update package.json correctly

* Added "_" sufix to internal variables (#1171)

* Added PublicRole test.

* Fixed crowdsale tests.

* Rename ERC interfaces to I prefix (#1252)

* rename ERC20 to IERC20

* move ERC20.sol to IERC20.sol

* rename StandardToken to ERC20

* rename StandardTokenMock to ERC20Mock

* move StandardToken.sol to ERC20.sol, likewise test and mock files

* rename MintableToken to ERC20Mintable

* move MintableToken.sol to ERC20Mintable.sol, likewise test and mock files

* rename BurnableToken to ERC20Burnable

* move BurnableToken.sol to ERC20Burnable.sol, likewise for related files

* rename CappedToken to ERC20Capped

* move CappedToken.sol to ERC20Capped.sol, likewise for related files

* rename PausableToken to ERC20Pausable

* move PausableToken.sol to ERC20Pausable.sol, likewise for related files

* rename DetailedERC20 to ERC20Detailed

* move DetailedERC20.sol to ERC20Detailed.sol, likewise for related files

* rename ERC721 to IERC721, and likewise for other related interfaces

* move ERC721.sol to IERC721.sol, likewise for other 721 interfaces

* rename ERC721Token to ERC721

* move ERC721Token.sol to ERC721.sol, likewise for related files

* rename ERC721BasicToken to ERC721Basic

* move ERC721BasicToken.sol to ERC721Basic.sol, likewise for related files

* rename ERC721PausableToken to ERC721Pausable

* move ERC721PausableToken.sol to ERC721Pausable.sol

* rename ERC165 to IERC165

* move ERC165.sol to IERC165.sol

* amend comment that ERC20 is based on FirstBlood

* fix comments mentioning IERC721Receiver

* added explicit visibility (#1261)

* Remove underscores from event parameters. (#1258)

* Remove underscores from event parameters.

Fixes #1175

* Add comment about ERC

* Move contracts to subdirectories (#1253)

* Move contracts to subdirectories

Fixes #1177.

This Change also removes the LimitBalance contract.

* fix import

* move MerkleProof to cryptography

* Fix import

* Remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner (#1254)

* remove HasNoEther, HasNoTokens, HasNoContracts, and NoOwner

* remove unused ERC223TokenMock

* remove Contactable

* remove TokenDestructible

* remove DeprecatedERC721

* inline Destructible#destroy in Bounty

* remove Destructible

* Functions in interfaces changed to "external" (#1263)

* Add a leading underscore to internal and private functions. (#1257)

* Add a leading underscore to internal and private functions.

Fixes #1176

* Remove super

* update the ERC721 changes

* add missing underscore after merge

* Fix mock

* Improve encapsulation on SignatureBouncer, Whitelist and RBAC example (#1265)

* Improve encapsulation on Whitelist

* remove only

* update whitelisted crowdsale test

* Improve encapsulation on SignatureBouncer

* fix missing test

* Improve encapsulation on RBAC example

* Improve encapsulation on RBAC example

* Remove extra visibility

* Improve encapsulation on ERC20 Mintable

* Improve encapsulation on Superuser

* fix lint

* add missing constant

* Addressed review comments.

* Fixed build error.

* move interface ids to implementation contracts

* Do not prefix getters

* Improve encapsulation on Crowdsales

* add missing tests

* remove only

* Improve encapsulation on Pausable

* add the underscore

* Improve encapsulation on ownership

* fix rebase

* fix ownership

* Improve encapsulation on payments

* Add missing tests

* add missing test

* Do not prefix getters

* Do not prefix getters

* Fix tests.

* Update modifiers to call public view functions.

Fixes #1179.

* Improve encapsulation on BreakInvariantBounty

* Make researchers private

* Improve encapsulation on Crowdsales

* add missing tests

* remove only

* Improve encapsulation on Pausable

* add the underscore

* Improve encapsulation on ownership

* fix rebase

* fix ownership

* Improve encapsulation on payments

* Add missing tests

* add missing test

* Do not prefix getters

* Do not prefix getters

* Do not prefix getters

* Fix tests.

* tmp

* remove isMinter

* fix is owner call

* fix isOpen

* Fix merge

* tmp

* Improve encapsulation on TimedCrowdsale

* Add missing parentheses

* Use prefix underscore for state variables and no underscore for parameters

* Improved Roles API. (#1280)

* Improved Roles API.

* fix linter error

* Added PauserRole. (#1283)

* remove duplicate function definition

* Remove Claimable, DelayedClaimable, Heritable (#1274)

* remove Claimable, DelayedClaimable, Heritable

* remove SimpleSavingsWallet example which used Heritable

(cherry picked from commit 0dc7117)

* Role behavior tests (#1285)

* Added role tests.

* Added PauserRole tests to contracts that have that role.

* Added MinterRole tests to contracts that have that role.

* Fixed linter errors.

* Migrate Ownable to Roles (#1287)

* Added CapperRole.

* RefundEscrow is now Secondary.

* FinalizableCrowdsale is no longer Ownable.

* Removed Whitelist and WhitelistedCrowdsale, redesign needed.

* Fixed linter errors, disabled lbrace due to it being buggy.

* Remove RBAC, SignatureBouncer refactor (#1289)

* Added CapperRole.

* RefundEscrow is now Secondary.

* FinalizableCrowdsale is no longer Ownable.

* Removed Whitelist and WhitelistedCrowdsale, redesign needed.

* Fixed linter errors, disabled lbrace due to it being buggy.

* Moved SignatureBouncer tests.

* Deleted RBAC and Superuser.

* Deleted rbac directory.

* Updated readme.

* SignatureBouncer now uses SignerRole, renamed bouncer to signer.

* feat: implement ERC721Mintable and ERC721Burnable (#1276)

* feat: implement ERC721Mintable and ERC721Burnable

* fix: linting errors

* fix: remove unused mintable mock for ERC721BasicMock

* fix: add finishMinting tests

* fix: catch MintFinished typo

* inline ERC721Full behavior

* undo pretty formatting

* fix lint errors

* rename canMint to onlyBeforeMintingFinished for consistency with ERC20Mintable

* Fix the merge with the privatization branch

* fix lint

* Remove underscore

* Delete CapperRole.test.js

* fix increaseApproval
  • Loading branch information
Leo Arias authored and frangio committed Sep 7, 2018
1 parent 254210f commit 6c4c898
Show file tree
Hide file tree
Showing 94 changed files with 1,175 additions and 1,193 deletions.
26 changes: 5 additions & 21 deletions CODE_STYLE.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,35 +16,19 @@ Any exception or additions specific to our project are documented below.

* Try to avoid acronyms and abbreviations.

* Parameters must be prefixed with an underscore.

```
function test(uint256 _testParameter1, uint256 _testParameter2) {
...
}
```
The exception are the parameters of events. There is no chance of ambiguity
with these, so they should not have underscores. Not even if they are
specified on an ERC with underscores; removing them doesn't change the ABI,
so we should be consistent with the rest of the events in this repository
and remove them.
* Internal and private state variables should have an underscore suffix.
* Private state variables should have an underscore prefix.

This comment has been minimized.

Copy link
@waterlink

waterlink Mar 17, 2020

Hey @frangio @ElOpio

Our team is evaluating whether to adopt this rule or not. What was your reasoning behind this code style rule?

Best,
Alex

This comment has been minimized.

Copy link
@frangio

frangio Mar 20, 2020

Contributor

Hi @waterlink, if I recall correctly the biggest reason was to avoid name conflicts that show up. Once your state variables are private, you may want to have external or public getters for them, and you aren't able to use the same name as the variable because it clashes. Adding an underscore to the state variable fixes this.

This comment has been minimized.

Copy link
@waterlink

waterlink Mar 25, 2020

Thank you!


```
contract TestContract {
uint256 internal internalVar_;
uint256 private privateVar_;
uint256 private _privateVar;
}
```
Variables declared in a function should not follow this rule.
* Parameters must not be prefixed with an underscore.
```
function test() {
uint256 functionVar;
...
function test(uint256 testParameter1, uint256 testParameter2) {
...
}
```
Expand Down
16 changes: 8 additions & 8 deletions contracts/access/roles/CapperRole.sol
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,21 @@ contract CapperRole {
_;
}

function isCapper(address _account) public view returns (bool) {
return cappers.has(_account);
function isCapper(address account) public view returns (bool) {
return cappers.has(account);
}

function addCapper(address _account) public onlyCapper {
cappers.add(_account);
emit CapperAdded(_account);
function addCapper(address account) public onlyCapper {
cappers.add(account);
emit CapperAdded(account);
}

function renounceCapper() public {
cappers.remove(msg.sender);
}

function _removeCapper(address _account) internal {
cappers.remove(_account);
emit CapperRemoved(_account);
function _removeCapper(address account) internal {
cappers.remove(account);
emit CapperRemoved(account);
}
}
16 changes: 8 additions & 8 deletions contracts/access/roles/MinterRole.sol
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,21 @@ contract MinterRole {
_;
}

function isMinter(address _account) public view returns (bool) {
return minters.has(_account);
function isMinter(address account) public view returns (bool) {
return minters.has(account);
}

function addMinter(address _account) public onlyMinter {
minters.add(_account);
emit MinterAdded(_account);
function addMinter(address account) public onlyMinter {
minters.add(account);
emit MinterAdded(account);
}

function renounceMinter() public {
minters.remove(msg.sender);
}

function _removeMinter(address _account) internal {
minters.remove(_account);
emit MinterRemoved(_account);
function _removeMinter(address account) internal {
minters.remove(account);
emit MinterRemoved(account);
}
}
16 changes: 8 additions & 8 deletions contracts/access/roles/PauserRole.sol
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,21 @@ contract PauserRole {
_;
}

function isPauser(address _account) public view returns (bool) {
return pausers.has(_account);
function isPauser(address account) public view returns (bool) {
return pausers.has(account);
}

function addPauser(address _account) public onlyPauser {
pausers.add(_account);
emit PauserAdded(_account);
function addPauser(address account) public onlyPauser {
pausers.add(account);
emit PauserAdded(account);
}

function renouncePauser() public {
pausers.remove(msg.sender);
}

function _removePauser(address _account) internal {
pausers.remove(_account);
emit PauserRemoved(_account);
function _removePauser(address account) internal {
pausers.remove(account);
emit PauserRemoved(account);
}
}
16 changes: 8 additions & 8 deletions contracts/access/roles/SignerRole.sol
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,21 @@ contract SignerRole {
_;
}

function isSigner(address _account) public view returns (bool) {
return signers.has(_account);
function isSigner(address account) public view returns (bool) {
return signers.has(account);
}

function addSigner(address _account) public onlySigner {
signers.add(_account);
emit SignerAdded(_account);
function addSigner(address account) public onlySigner {
signers.add(account);
emit SignerAdded(account);
}

function renounceSigner() public {
signers.remove(msg.sender);
}

function _removeSigner(address _account) internal {
signers.remove(_account);
emit SignerRemoved(_account);
function _removeSigner(address account) internal {
signers.remove(account);
emit SignerRemoved(account);
}
}
20 changes: 10 additions & 10 deletions contracts/bounties/BreakInvariantBounty.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,24 @@ import "../ownership/Ownable.sol";
* @dev This bounty will pay out to a researcher if they break invariant logic of the contract.
*/
contract BreakInvariantBounty is PullPayment, Ownable {
bool private claimed_;
mapping(address => address) private researchers;
bool private _claimed;
mapping(address => address) private _researchers;

event TargetCreated(address createdAddress);

/**
* @dev Fallback function allowing the contract to receive funds, if they haven't already been claimed.
*/
function() external payable {
require(!claimed_);
require(!_claimed);
}

/**
* @dev Determine if the bounty was claimed.
* @return true if the bounty was claimed, false otherwise.
*/
function claimed() public view returns(bool) {
return claimed_;
return _claimed;
}

/**
Expand All @@ -37,22 +37,22 @@ contract BreakInvariantBounty is PullPayment, Ownable {
*/
function createTarget() public returns(Target) {
Target target = Target(_deployContract());
researchers[target] = msg.sender;
_researchers[target] = msg.sender;
emit TargetCreated(target);
return target;
}

/**
* @dev Transfers the contract funds to the researcher that proved the contract is broken.
* @param _target contract
* @param target contract
*/
function claim(Target _target) public {
address researcher = researchers[_target];
function claim(Target target) public {
address researcher = _researchers[target];
require(researcher != address(0));
// Check Target contract invariants
require(!_target.checkInvariant());
require(!target.checkInvariant());
_asyncTransfer(researcher, address(this).balance);
claimed_ = true;
_claimed = true;
}

/**
Expand Down
Loading

0 comments on commit 6c4c898

Please sign in to comment.