gemini-code-assist[bot] commented on code in PR #37765:
URL: https://github.com/apache/beam/pull/37765#discussion_r2885729184


##########
runners/spark/3/src/main/java/org/apache/beam/runners/spark/structuredstreaming/translation/helpers/EncoderHelpers.java:
##########
@@ -114,42 +113,42 @@ public class EncoderHelpers {
   private static final Map<Class<?>, Encoder<?>> DEFAULT_ENCODERS = new 
ConcurrentHashMap<>();
 
   // Factory for default encoders by class
-  private static final Function<Class<?>, @Nullable Encoder<?>> 
ENCODER_FACTORY =
-      cls -> {
-        if (cls.equals(PaneInfo.class)) {
-          return paneInfoEncoder();
-        } else if (cls.equals(GlobalWindow.class)) {
-          return binaryEncoder(GlobalWindow.Coder.INSTANCE, false);
-        } else if (cls.equals(IntervalWindow.class)) {
-          return binaryEncoder(IntervalWindowCoder.of(), false);
-        } else if (cls.equals(Instant.class)) {
-          return instantEncoder();
-        } else if (cls.equals(String.class)) {
-          return Encoders.STRING();
-        } else if (cls.equals(Boolean.class)) {
-          return Encoders.BOOLEAN();
-        } else if (cls.equals(Integer.class)) {
-          return Encoders.INT();
-        } else if (cls.equals(Long.class)) {
-          return Encoders.LONG();
-        } else if (cls.equals(Float.class)) {
-          return Encoders.FLOAT();
-        } else if (cls.equals(Double.class)) {
-          return Encoders.DOUBLE();
-        } else if (cls.equals(BigDecimal.class)) {
-          return Encoders.DECIMAL();
-        } else if (cls.equals(byte[].class)) {
-          return Encoders.BINARY();
-        } else if (cls.equals(Byte.class)) {
-          return Encoders.BYTE();
-        } else if (cls.equals(Short.class)) {
-          return Encoders.SHORT();
-        }
-        return null;
-      };
+  private static @Nullable Encoder<?> encoderFactory(Class<?> cls) {
+    if (cls.equals(PaneInfo.class)) {
+      return paneInfoEncoder();
+    } else if (cls.equals(GlobalWindow.class)) {
+      return binaryEncoder(GlobalWindow.Coder.INSTANCE, false);
+    } else if (cls.equals(IntervalWindow.class)) {
+      return binaryEncoder(IntervalWindowCoder.of(), false);
+    } else if (cls.equals(Instant.class)) {
+      return instantEncoder();
+    } else if (cls.equals(String.class)) {
+      return Encoders.STRING();
+    } else if (cls.equals(Boolean.class)) {
+      return Encoders.BOOLEAN();
+    } else if (cls.equals(Integer.class)) {
+      return Encoders.INT();
+    } else if (cls.equals(Long.class)) {
+      return Encoders.LONG();
+    } else if (cls.equals(Float.class)) {
+      return Encoders.FLOAT();
+    } else if (cls.equals(Double.class)) {
+      return Encoders.DOUBLE();
+    } else if (cls.equals(BigDecimal.class)) {
+      return Encoders.DECIMAL();
+    } else if (cls.equals(byte[].class)) {
+      return Encoders.BINARY();
+    } else if (cls.equals(Byte.class)) {
+      return Encoders.BYTE();
+    } else if (cls.equals(Short.class)) {
+      return Encoders.SHORT();
+    }
+    return null;

Review Comment:
   ![medium](https://www.gstatic.com/codereviewagent/medium-priority.svg)
   
   For better readability and maintainability, you could refactor this long 
`if-else if` chain into a `switch` statement on the canonical name of the 
class. This makes the code cleaner and easier to extend.
   
   ```java
       String canonicalName = cls.getCanonicalName();
       if (canonicalName == null) {
         return null;
       }
       switch (canonicalName) {
         case "org.apache.beam.sdk.transforms.windowing.PaneInfo":
           return paneInfoEncoder();
         case "org.apache.beam.sdk.transforms.windowing.GlobalWindow":
           return binaryEncoder(GlobalWindow.Coder.INSTANCE, false);
         case "org.apache.beam.sdk.transforms.windowing.IntervalWindow":
           return binaryEncoder(IntervalWindowCoder.of(), false);
         case "org.joda.time.Instant":
           return instantEncoder();
         case "java.lang.String":
           return Encoders.STRING();
         case "java.lang.Boolean":
           return Encoders.BOOLEAN();
         case "java.lang.Integer":
           return Encoders.INT();
         case "java.lang.Long":
           return Encoders.LONG();
         case "java.lang.Float":
           return Encoders.FLOAT();
         case "java.lang.Double":
           return Encoders.DOUBLE();
         case "java.math.BigDecimal":
           return Encoders.DECIMAL();
         case "byte[]":
           return Encoders.BINARY();
         case "java.lang.Byte":
           return Encoders.BYTE();
         case "java.lang.Short":
           return Encoders.SHORT();
         default:
           return null;
       }
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to