From c92faee66e8823de50fbe1dab4b0c4549802e730 Mon Sep 17 00:00:00 2001
From: Alex Prut <1648497+alexprut@users.noreply.github.com>
Date: Wed, 25 Nov 2020 09:24:50 +0100
Subject: [PATCH] all: simplify nested complexity and if blocks ending with a
 return statement (#21854)

Changes:

    Simplify nested complexity
    If an if blocks ends with a return statement then remove the else nesting.

Most of the changes has also been reported in golint https://goreportcard.com/report/github.com/ethereum/go-ethereum#golint
---
 cmd/clef/main.go                     |  6 ++---
 cmd/utils/flags.go                   | 19 +++++++-------
 console/bridge.go                    | 17 ++++++------
 core/headerchain.go                  |  3 +--
 crypto/bls12381/g1.go                |  3 +--
 crypto/bls12381/g2.go                |  3 +--
 les/benchmark.go                     |  9 +++----
 les/lespay/server/balance.go         |  3 +--
 les/lespay/server/balance_tracker.go |  3 +--
 les/lespay/server/prioritypool.go    |  3 +--
 les/odr_requests.go                  |  3 +--
 les/serverpool.go                    |  3 +--
 les/serverpool_test.go               | 39 +++++++++++++---------------
 p2p/nat/nat.go                       |  3 +--
 p2p/nodestate/nodestate_test.go      |  6 ++---
 p2p/simulations/network.go           |  9 +++----
 rlp/encode_test.go                   |  3 +--
 rpc/client.go                        |  3 +--
 trie/committer.go                    |  1 -
 19 files changed, 56 insertions(+), 83 deletions(-)

diff --git a/cmd/clef/main.go b/cmd/clef/main.go
index aef3cfba4..3207042a6 100644
--- a/cmd/clef/main.go
+++ b/cmd/clef/main.go
@@ -747,12 +747,10 @@ func DefaultConfigDir() string {
 			appdata := os.Getenv("APPDATA")
 			if appdata != "" {
 				return filepath.Join(appdata, "Signer")
-			} else {
-				return filepath.Join(home, "AppData", "Roaming", "Signer")
 			}
-		} else {
-			return filepath.Join(home, ".clef")
+			return filepath.Join(home, "AppData", "Roaming", "Signer")
 		}
+		return filepath.Join(home, ".clef")
 	}
 	// As we cannot guess a stable location, return empty and handle later
 	return ""
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index 1b86771db..26dbb9faf 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -1695,19 +1695,18 @@ func RegisterEthService(stack *node.Node, cfg *eth.Config) ethapi.Backend {
 			Fatalf("Failed to register the Ethereum service: %v", err)
 		}
 		return backend.ApiBackend
-	} else {
-		backend, err := eth.New(stack, cfg)
+	}
+	backend, err := eth.New(stack, cfg)
+	if err != nil {
+		Fatalf("Failed to register the Ethereum service: %v", err)
+	}
+	if cfg.LightServ > 0 {
+		_, err := les.NewLesServer(stack, backend, cfg)
 		if err != nil {
-			Fatalf("Failed to register the Ethereum service: %v", err)
-		}
-		if cfg.LightServ > 0 {
-			_, err := les.NewLesServer(stack, backend, cfg)
-			if err != nil {
-				Fatalf("Failed to create the LES server: %v", err)
-			}
+			Fatalf("Failed to create the LES server: %v", err)
 		}
-		return backend.APIBackend
 	}
+	return backend.APIBackend
 }
 
 // RegisterEthStatsService configures the Ethereum Stats daemon and adds it to
diff --git a/console/bridge.go b/console/bridge.go
index 1a2326919..21ef0e8e7 100644
--- a/console/bridge.go
+++ b/console/bridge.go
@@ -144,15 +144,14 @@ func (b *bridge) OpenWallet(call jsre.Call) (goja.Value, error) {
 		if val, err = openWallet(goja.Null(), wallet, passwd); err != nil {
 			if !strings.HasSuffix(err.Error(), scwallet.ErrPINNeeded.Error()) {
 				return nil, err
-			} else {
-				// PIN input requested, fetch from the user and call open again
-				input, err := b.prompter.PromptPassword("Please enter current PIN: ")
-				if err != nil {
-					return nil, err
-				}
-				if val, err = openWallet(goja.Null(), wallet, call.VM.ToValue(input)); err != nil {
-					return nil, err
-				}
+			}
+			// PIN input requested, fetch from the user and call open again
+			input, err := b.prompter.PromptPassword("Please enter current PIN: ")
+			if err != nil {
+				return nil, err
+			}
+			if val, err = openWallet(goja.Null(), wallet, call.VM.ToValue(input)); err != nil {
+				return nil, err
 			}
 		}
 
diff --git a/core/headerchain.go b/core/headerchain.go
index f5a8e21cf..7c1aff99d 100644
--- a/core/headerchain.go
+++ b/core/headerchain.go
@@ -369,9 +369,8 @@ func (hc *HeaderChain) GetAncestor(hash common.Hash, number, ancestor uint64, ma
 		// in this case it is cheaper to just read the header
 		if header := hc.GetHeader(hash, number); header != nil {
 			return header.ParentHash, number - 1
-		} else {
-			return common.Hash{}, 0
 		}
+		return common.Hash{}, 0
 	}
 	for ancestor != 0 {
 		if rawdb.ReadCanonicalHash(hc.chainDb, number) == hash {
diff --git a/crypto/bls12381/g1.go b/crypto/bls12381/g1.go
index 63d38f90c..d853823cd 100644
--- a/crypto/bls12381/g1.go
+++ b/crypto/bls12381/g1.go
@@ -266,9 +266,8 @@ func (g *G1) Add(r, p1, p2 *PointG1) *PointG1 {
 	if t[1].equal(t[3]) {
 		if t[0].equal(t[2]) {
 			return g.Double(r, p1)
-		} else {
-			return r.Zero()
 		}
+		return r.Zero()
 	}
 	sub(t[1], t[1], t[3])
 	double(t[4], t[1])
diff --git a/crypto/bls12381/g2.go b/crypto/bls12381/g2.go
index 1d1a3258f..fa110e3ed 100644
--- a/crypto/bls12381/g2.go
+++ b/crypto/bls12381/g2.go
@@ -287,9 +287,8 @@ func (g *G2) Add(r, p1, p2 *PointG2) *PointG2 {
 	if t[1].equal(t[3]) {
 		if t[0].equal(t[2]) {
 			return g.Double(r, p1)
-		} else {
-			return r.Zero()
 		}
+		return r.Zero()
 	}
 	g.f.sub(t[1], t[1], t[3])
 	g.f.double(t[4], t[1])
diff --git a/les/benchmark.go b/les/benchmark.go
index a146de2fe..312d4533d 100644
--- a/les/benchmark.go
+++ b/les/benchmark.go
@@ -75,9 +75,8 @@ func (b *benchmarkBlockHeaders) init(h *serverHandler, count int) error {
 func (b *benchmarkBlockHeaders) request(peer *serverPeer, index int) error {
 	if b.byHash {
 		return peer.requestHeadersByHash(0, b.hashes[index], b.amount, b.skip, b.reverse)
-	} else {
-		return peer.requestHeadersByNumber(0, uint64(b.offset+rand.Int63n(b.randMax)), b.amount, b.skip, b.reverse)
 	}
+	return peer.requestHeadersByNumber(0, uint64(b.offset+rand.Int63n(b.randMax)), b.amount, b.skip, b.reverse)
 }
 
 // benchmarkBodiesOrReceipts implements requestBenchmark
@@ -98,9 +97,8 @@ func (b *benchmarkBodiesOrReceipts) init(h *serverHandler, count int) error {
 func (b *benchmarkBodiesOrReceipts) request(peer *serverPeer, index int) error {
 	if b.receipts {
 		return peer.requestReceipts(0, []common.Hash{b.hashes[index]})
-	} else {
-		return peer.requestBodies(0, []common.Hash{b.hashes[index]})
 	}
+	return peer.requestBodies(0, []common.Hash{b.hashes[index]})
 }
 
 // benchmarkProofsOrCode implements requestBenchmark
@@ -119,9 +117,8 @@ func (b *benchmarkProofsOrCode) request(peer *serverPeer, index int) error {
 	rand.Read(key)
 	if b.code {
 		return peer.requestCode(0, []CodeReq{{BHash: b.headHash, AccKey: key}})
-	} else {
-		return peer.requestProofs(0, []ProofReq{{BHash: b.headHash, Key: key}})
 	}
+	return peer.requestProofs(0, []ProofReq{{BHash: b.headHash, Key: key}})
 }
 
 // benchmarkHelperTrie implements requestBenchmark
diff --git a/les/lespay/server/balance.go b/les/lespay/server/balance.go
index f820a4ad0..f5073d0db 100644
--- a/les/lespay/server/balance.go
+++ b/les/lespay/server/balance.go
@@ -588,9 +588,8 @@ func (n *NodeBalance) timeUntil(priority int64) (time.Duration, bool) {
 			}
 			dt = float64(posBalance-newBalance) / timePrice
 			return time.Duration(dt), true
-		} else {
-			dt = float64(posBalance) / timePrice
 		}
+		dt = float64(posBalance) / timePrice
 	} else {
 		if priority > 0 {
 			return 0, false
diff --git a/les/lespay/server/balance_tracker.go b/les/lespay/server/balance_tracker.go
index c1ea3c649..edd4b288d 100644
--- a/les/lespay/server/balance_tracker.go
+++ b/les/lespay/server/balance_tracker.go
@@ -261,9 +261,8 @@ func (bt *BalanceTracker) storeBalance(id []byte, neg bool, value utils.ExpiredV
 func (bt *BalanceTracker) canDropBalance(now mclock.AbsTime, neg bool, b utils.ExpiredValue) bool {
 	if neg {
 		return b.Value(bt.negExp.LogOffset(now)) <= negThreshold
-	} else {
-		return b.Value(bt.posExp.LogOffset(now)) <= posThreshold
 	}
+	return b.Value(bt.posExp.LogOffset(now)) <= posThreshold
 }
 
 // updateTotalBalance adjusts the total balance after executing given callback.
diff --git a/les/lespay/server/prioritypool.go b/les/lespay/server/prioritypool.go
index c0c33840c..e3327aba7 100644
--- a/les/lespay/server/prioritypool.go
+++ b/les/lespay/server/prioritypool.go
@@ -288,9 +288,8 @@ func activePriority(a interface{}, now mclock.AbsTime) int64 {
 	}
 	if c.bias == 0 {
 		return invertPriority(c.nodePriority.Priority(now, c.capacity))
-	} else {
-		return invertPriority(c.nodePriority.EstMinPriority(now+mclock.AbsTime(c.bias), c.capacity, true))
 	}
+	return invertPriority(c.nodePriority.EstMinPriority(now+mclock.AbsTime(c.bias), c.capacity, true))
 }
 
 // activeMaxPriority callback returns estimated maximum priority of ppNodeInfo item in activeQueue
diff --git a/les/odr_requests.go b/les/odr_requests.go
index 3cc55c98d..3704436a0 100644
--- a/les/odr_requests.go
+++ b/les/odr_requests.go
@@ -329,9 +329,8 @@ func (r *ChtRequest) CanSend(peer *serverPeer) bool {
 
 	if r.Untrusted {
 		return peer.headInfo.Number >= r.BlockNum && peer.id == r.PeerId
-	} else {
-		return peer.headInfo.Number >= r.Config.ChtConfirms && r.ChtNum <= (peer.headInfo.Number-r.Config.ChtConfirms)/r.Config.ChtSize
 	}
+	return peer.headInfo.Number >= r.Config.ChtConfirms && r.ChtNum <= (peer.headInfo.Number-r.Config.ChtConfirms)/r.Config.ChtSize
 }
 
 // Request sends an ODR request to the LES network (implementation of LesOdrRequest)
diff --git a/les/serverpool.go b/les/serverpool.go
index 9bfa0bd72..6cf4affff 100644
--- a/les/serverpool.go
+++ b/les/serverpool.go
@@ -112,9 +112,8 @@ var (
 				}
 				enc, err := rlp.EncodeToBytes(&ne)
 				return enc, err
-			} else {
-				return nil, errors.New("invalid field type")
 			}
+			return nil, errors.New("invalid field type")
 		},
 		func(enc []byte) (interface{}, error) {
 			var ne nodeHistoryEnc
diff --git a/les/serverpool_test.go b/les/serverpool_test.go
index 3d0487d10..70a41b74c 100644
--- a/les/serverpool_test.go
+++ b/les/serverpool_test.go
@@ -119,31 +119,28 @@ func (s *serverPoolTest) start() {
 				s.clock.Sleep(time.Second * 5)
 				s.endWait()
 				return -1
-			} else {
-				switch idx % 3 {
-				case 0:
-					// pre-neg returns true only if connection is possible
-					if canConnect {
-						return 1
-					} else {
-						return 0
-					}
-				case 1:
-					// pre-neg returns true but connection might still fail
+			}
+			switch idx % 3 {
+			case 0:
+				// pre-neg returns true only if connection is possible
+				if canConnect {
+					return 1
+				}
+				return 0
+			case 1:
+				// pre-neg returns true but connection might still fail
+				return 1
+			case 2:
+				// pre-neg returns true if connection is possible, otherwise timeout (node unresponsive)
+				if canConnect {
 					return 1
-				case 2:
-					// pre-neg returns true if connection is possible, otherwise timeout (node unresponsive)
-					if canConnect {
-						return 1
-					} else {
-						s.beginWait()
-						s.clock.Sleep(time.Second * 5)
-						s.endWait()
-						return -1
-					}
 				}
+				s.beginWait()
+				s.clock.Sleep(time.Second * 5)
+				s.endWait()
 				return -1
 			}
+			return -1
 		}
 	}
 
diff --git a/p2p/nat/nat.go b/p2p/nat/nat.go
index f47534784..9d5519b9c 100644
--- a/p2p/nat/nat.go
+++ b/p2p/nat/nat.go
@@ -219,9 +219,8 @@ func (n *autodisc) String() string {
 	defer n.mu.Unlock()
 	if n.found == nil {
 		return n.what
-	} else {
-		return n.found.String()
 	}
+	return n.found.String()
 }
 
 // wait blocks until auto-discovery has been performed.
diff --git a/p2p/nodestate/nodestate_test.go b/p2p/nodestate/nodestate_test.go
index 5f99a3da7..d06ad755e 100644
--- a/p2p/nodestate/nodestate_test.go
+++ b/p2p/nodestate/nodestate_test.go
@@ -240,9 +240,8 @@ func uint64FieldEnc(field interface{}) ([]byte, error) {
 	if u, ok := field.(uint64); ok {
 		enc, err := rlp.EncodeToBytes(&u)
 		return enc, err
-	} else {
-		return nil, errors.New("invalid field type")
 	}
+	return nil, errors.New("invalid field type")
 }
 
 func uint64FieldDec(enc []byte) (interface{}, error) {
@@ -254,9 +253,8 @@ func uint64FieldDec(enc []byte) (interface{}, error) {
 func stringFieldEnc(field interface{}) ([]byte, error) {
 	if s, ok := field.(string); ok {
 		return []byte(s), nil
-	} else {
-		return nil, errors.New("invalid field type")
 	}
+	return nil, errors.New("invalid field type")
 }
 
 func stringFieldDec(enc []byte) (interface{}, error) {
diff --git a/p2p/simulations/network.go b/p2p/simulations/network.go
index a54db4ea6..9b5e2c37f 100644
--- a/p2p/simulations/network.go
+++ b/p2p/simulations/network.go
@@ -454,9 +454,8 @@ func (net *Network) getNodeIDs(excludeIDs []enode.ID) []enode.ID {
 	if len(excludeIDs) > 0 {
 		// Return the difference of nodeIDs and excludeIDs
 		return filterIDs(nodeIDs, excludeIDs)
-	} else {
-		return nodeIDs
 	}
+	return nodeIDs
 }
 
 // GetNodes returns the existing nodes.
@@ -472,9 +471,8 @@ func (net *Network) getNodes(excludeIDs []enode.ID) []*Node {
 	if len(excludeIDs) > 0 {
 		nodeIDs := net.getNodeIDs(excludeIDs)
 		return net.getNodesByID(nodeIDs)
-	} else {
-		return net.Nodes
 	}
+	return net.Nodes
 }
 
 // GetNodesByID returns existing nodes with the given enode.IDs.
@@ -1098,7 +1096,6 @@ func (net *Network) executeNodeEvent(e *Event) error {
 func (net *Network) executeConnEvent(e *Event) error {
 	if e.Conn.Up {
 		return net.Connect(e.Conn.One, e.Conn.Other)
-	} else {
-		return net.Disconnect(e.Conn.One, e.Conn.Other)
 	}
+	return net.Disconnect(e.Conn.One, e.Conn.Other)
 }
diff --git a/rlp/encode_test.go b/rlp/encode_test.go
index 680374519..418ee10a3 100644
--- a/rlp/encode_test.go
+++ b/rlp/encode_test.go
@@ -39,9 +39,8 @@ func (e *testEncoder) EncodeRLP(w io.Writer) error {
 	}
 	if e.err != nil {
 		return e.err
-	} else {
-		w.Write([]byte{0, 1, 0, 1, 0, 1, 0, 1, 0, 1})
 	}
+	w.Write([]byte{0, 1, 0, 1, 0, 1, 0, 1, 0, 1})
 	return nil
 }
 
diff --git a/rpc/client.go b/rpc/client.go
index 91e68e73e..9393adb77 100644
--- a/rpc/client.go
+++ b/rpc/client.go
@@ -404,9 +404,8 @@ func (c *Client) Notify(ctx context.Context, method string, args ...interface{})
 
 	if c.isHTTP {
 		return c.sendHTTP(ctx, op, msg)
-	} else {
-		return c.send(ctx, op, msg)
 	}
+	return c.send(ctx, op, msg)
 }
 
 // EthSubscribe registers a subscripion under the "eth" namespace.
diff --git a/trie/committer.go b/trie/committer.go
index 20c95bed0..33fd9e982 100644
--- a/trie/committer.go
+++ b/trie/committer.go
@@ -267,6 +267,5 @@ func estimateSize(n node) int {
 		return 1 + len(n)
 	default:
 		panic(fmt.Sprintf("node type %T", n))
-
 	}
 }
-- 
GitLab