Java Refined เป็นไลบรารีที่ใส่ refined type ที่กำหนดไว้ล่วงหน้าอย่าง NonBlankString, PositiveInt แทน String, int เพื่อ ย้ายการตรวจสอบไปไว้ใน signature

// Before  
void createUser(String name, int age, List<String> roles) {  
    if (name == null || name.isBlank()) throw new IAE("name");  
    if (age <= 0) throw new IAE("age");  
    if (roles == null || roles.isEmpty()) throw new IAE("roles");  
}  
  
// After  
void createUser(NonBlankString name, PositiveInt age, NonEmptyList<String> roles) { }  
  • มี type ที่กำหนดไว้ล่วงหน้า 123 แบบ ให้ import มาใช้ได้ทันที (VAVR/Arrow ให้มาแค่แพตเทิร์น)
  • NonEmptyList<T> implements List<T> โดยตรง — ไม่ต้อง unwrap
  • ไม่มี runtime dependency · Java 8+ · MIT · Maven Central · มีโมดูลเสริมสำหรับ Kotlin แยกต่างหาก
  • line coverage 100% + คะแนน PIT mutation 95%
  • พูดกันตรง ๆ: เป็นโปรเจกต์ของคนเดียว, ไม่มี JMH benchmark, ไม่มี bridge สำหรับ Jackson/@Valid

GitHub: https://github.com/JunggiKim/java-refined

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น