Refactor command_format.cc

- Add IsAssignment() and IsTargetsList() helper functions to consolidate
  some repeated code.
- Reorder conditionals to do the cheaper checks first.
- Use early returns in some cases.

Change-Id: I277665e3c013cd945c38ee82f23f51995ee1d8fb
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/19400
Reviewed-by: Takuto Ikuta <tikuta@google.com>
Commit-Queue: Takuto Ikuta <tikuta@google.com>
diff --git a/src/gn/command_format.cc b/src/gn/command_format.cc
index c9b9233..a509eed 100644
--- a/src/gn/command_format.cc
+++ b/src/gn/command_format.cc
@@ -116,6 +116,14 @@
                               .size());
 }
 
+bool IsAssignment(std::string_view op) {
+  return op == "=" || op == "+=" || op == "-=";
+}
+
+bool IsTargetsList(std::string_view ident) {
+  return ident.ends_with("deps") || ident == "visibility";
+}
+
 class Printer {
  public:
   Printer();
@@ -402,19 +410,20 @@
 
 void Printer::ShortenIfApplicable(const BinaryOpNode* binop) {
   const IdentifierNode* ident = binop->left()->AsIdentifier();
-  if ((binop->op().value() == "=" || binop->op().value() == "+=" ||
-       binop->op().value() == "-=") &&
-      ident) {
-    const std::string_view lhs = ident->value().value();
-    if (lhs.ends_with("deps") || lhs == "visibility") {
-      TraverseBinaryOpNode(binop->right(), [](const ParseNode* node) {
-        const ListNode* list = node->AsList();
-        if (list) {
-          const_cast<ListNode*>(list)->ShortenTargets();
-        }
-      });
-    }
+  if (!ident || !IsAssignment(binop->op().value())) {
+    return;
   }
+
+  if (!IsTargetsList(ident->value().value())) {
+    return;
+  }
+
+  TraverseBinaryOpNode(binop->right(), [](const ParseNode* node) {
+    const ListNode* list = node->AsList();
+    if (list) {
+      const_cast<ListNode*>(list)->ShortenTargets();
+    }
+  });
 }
 
 void Printer::SortIfApplicable(const BinaryOpNode* binop) {
@@ -428,23 +437,23 @@
     }
   }
   const IdentifierNode* ident = binop->left()->AsIdentifier();
-  if ((binop->op().value() == "=" || binop->op().value() == "+=" ||
-       binop->op().value() == "-=") &&
-      ident) {
-    const std::string_view lhs = ident->value().value();
-    if (lhs.ends_with("sources") || lhs == "public") {
-      TraverseBinaryOpNode(binop->right(), [](const ParseNode* node) {
-        const ListNode* list = node->AsList();
-        if (list)
-          const_cast<ListNode*>(list)->SortAsStringsList();
-      });
-    } else if (lhs.ends_with("deps") || lhs == "visibility") {
-      TraverseBinaryOpNode(binop->right(), [](const ParseNode* node) {
-        const ListNode* list = node->AsList();
-        if (list)
-          const_cast<ListNode*>(list)->SortAsTargetsList();
-      });
-    }
+  if (!ident || !IsAssignment(binop->op().value())) {
+    return;
+  }
+
+  const std::string_view lhs = ident->value().value();
+  if (lhs.ends_with("sources") || lhs == "public") {
+    TraverseBinaryOpNode(binop->right(), [](const ParseNode* node) {
+      const ListNode* list = node->AsList();
+      if (list)
+        const_cast<ListNode*>(list)->SortAsStringsList();
+    });
+  } else if (IsTargetsList(lhs)) {
+    TraverseBinaryOpNode(binop->right(), [](const ParseNode* node) {
+      const ListNode* list = node->AsList();
+      if (list)
+        const_cast<ListNode*>(list)->SortAsTargetsList();
+    });
   }
 }
 
@@ -806,9 +815,7 @@
 
     int start_line = CurrentLine();
     int start_column = CurrentColumn();
-    bool is_assignment = binop->op().value() == "=" ||
-                         binop->op().value() == "+=" ||
-                         binop->op().value() == "-=";
+    bool is_assignment = IsAssignment(binop->op().value());
 
     int indent_column = start_column;
     if (is_assignment) {