Одна большая передаточная функция или разделенная на несколько функций

Лучше просто сохранить всю логику в передаточной функции или разделить ее на 3 функции, как я сделал? Заранее спасибо!

function transfer(address _to, uint256 _value) public returns (bool) {

    require(_to != address(0));
    if (updateBalance(_to, _value)) { 
        if(allowedContracts[_to]) {
            BIHReceiver receiver = BIHReceiver(_to);
            receiver.tokenFallback(msg.sender,_value);
        }
        Transfer(msg.sender, _to, (_value.sub(feePaid)));
        Transfer(msg.sender, feeWallet, (feePaid));
    }
    return true;
}


function updateBalance(address _to, uint256 _value) public returns (bool) {

    require(_to != address(0));
    if (checkBalance(_to,_value)) {
        uint256 feePaid = (_value.mul(fee).div(10000);
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value.sub(feePaid));
        balances[feeWallet] = balances[feeWallet].add(feePaid);
        return true;
    }
} 

function checkBalance(address _to, uint256 _value) public returns (bool) {

    require(_to != address(0));
    if(_value > 0) {
        if(balances[msg.sender] == 0) {
            addresses[indexes[msg.sender]] = addresses[lastIndex];
            indexes[addresses[lastIndex]] = indexes[msg.sender];
            indexes[msg.sender] = 0;
            delete addresses[lastIndex];
            lastIndex--;
        }
        if(indexes[_to]==0) {
            lastIndex++;
            addresses[lastIndex] = _to;
            indexes[_to] = lastIndex;
        }
        return false;
    } else {
        return true; 
    }
}

Ответы (1)

В общем, разработчики обычно делают функции короткими и простыми с ограниченной ответственностью по причинам, включая (но не ограничиваясь):

  1. это повышает удобочитаемость, что облегчает следование намерению
  2. легче тестировать функции с меньшим количеством побочных эффектов
  3. легче оставаться СУХИМ и предотвращать потенциально катастрофические ошибки, возникающие из-за небольших различий в том, что должно быть одним и тем же кодом.

Я бы сказал, распределите его по нескольким функциям.