Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Java Tips และ Tricks สำหรับนักพัฒนา

เคล็ดลับ Java สำคัญ 8 ข้อ

  1. Array vs ArrayList
    Array: ขนาดคงที่, primitive ได้, เร็วกว่าเล็กน้อย
    ArrayList: ขนาดยืดหยได้, เฉพาะ object, rich API
    → ใช้ ArrayList เป็นหลัก เฉพาะ critical performance ใช้ array
  2. ใช้ String ให้ถูกต้อง
    String immutable - การต่อสตริงในลูปสร้าง object เยอะ → ใช้ StringBuilder
    "a" + "b" คอมไพเลอร์ optimize ให้ (compile-time constant)
    s1 + s2 runtime → สร้าง StringBuilder ใหม่ทุกครั้ง
  3. Try-Finally vs Try-With-Resources
    Java 7+: ใช้ try (Resource r = ...) { } ปิด resource อัตโนมัติ (AutoCloseable)
    หลีกเลี่ยง finally block แบบ manual close ที่อาจลืมหรือ exception ทับซ้อน
  4. คืน Empty Collection แทน Null
    return Collections.emptyList(); แทน return null;
    Caller ไม่ต้อง null-check, ใช้ for-each ได้เลย ป้องกัน NPE
  5. หลีกเลี่ยง Memory Leaks
    - Listener/Callback ไม่ถูก unregister
    - Static collection เก็บ object ไม่เคย clear
    - ThreadLocal ไม่ remove()
    - Cache ไม่มี eviction policy
    → ใช้ WeakReference, Cleaner, หรือ profiling tools (JProfiler, VisualVM)
  6. ป้องกัน Deadlock
    - Lock ordering: acquire locks ตลอดในลำดับเดียวกัน
    - ใช้ tryLock(timeout) แทน lock แบบ blocking
    - ลด scope ของ synchronized block ให้น้อยที่สุด
  7. จัดการ NullPointerException
    - ใช้ Objects.requireNonNull(), Optional<T>
    - Аннотация @NonNull, @Nullable (SpotBugs, IntelliJ)
    - Defensive copy สำหรับ mutable parameters
  8. Regex ใช้ให้เหมาะสม
    - Simple case: ใช้ String.contains(), startsWith(), split()
    - Complex: compile pattern ใหม่ทุกครั้งช้า → ใช้ Pattern.compile() แบบ static final
    - Catastrophic backtracking: หลีกเลี่ยง nested quantifiers (a+)+

เพิ่มเติม: Modern Java (8-21)

  • Stream API: list.stream().filter().map().collect()
  • Record (Java 14+): immutable data carrier
  • Pattern Matching (Java 16+): if (obj instanceof String s)
  • Text Blocks (Java 15+): multi-line string """..."""
  • Virtual Threads (Java 21+): lightweight threads