A function with <code>public</code> visibility modifier that is not called internally. Changing visibility level to <code>external</code> increases code readability. Moreover, in many cases functions with <code>external</code> visibility modifier spend less gas comparing to functions with <code>public</code> visibility modifier.
function badf2(uint256 a) pure public returns (uint256){
require(a > 7);
return 5;
}
function notbadf2(uint256 a) pure public returns (uint256){
require(a > 7);
return 5;
}
function f0(uint256 a) pure external override returns (uint256){
require(a > 7);
return 5;
}
function f1() private pure returns (uint256){
return 5;
}
function f2(uint256 a) private pure returns (uint256){
require(a > 7);
return 5;
}
function f3() public pure returns (uint256){
return 5;
}
function f4(uint256 a) public pure returns (uint256){
require(a > 7);
return 5;
}
function useFunctions() private returns(uint256) {
uint256 temp = f3();
temp = f4(9);
return temp;
}
}
contract Child is Test {
function useOne() private {
notbadf2(54);
}
}
interface ITest {
function notUsed() public;
}
```
### Abstract Syntax Tree
[Click Here](https://astexplorer.net/#/gist/909531a8249b0be7bbbe8db57f7bd024/90dedc267f05e61db8e9d805e05321719855f5ac) to view the AST for the above code. Code generated from AST Explorer using _solidity-parser-antlr-0.4.11_