Diperkenalkannya TypeSchema, sebuah spesifikasi JSON baru untuk mendeskripsikan model data, telah memicu perdebatan sengit di kalangan komunitas pengembang tentang kebutuhan dan keunggulannya dibandingkan solusi yang sudah ada, khususnya JSON Schema.
Proposisi TypeSchema
TypeSchema memposisikan dirinya sebagai spesifikasi JSON yang dioptimalkan untuk menghasilkan kode di berbagai bahasa pemrograman, mendukung fitur-fitur seperti pewarisan, polimorfisme, dan generik. Alat ini dapat menghasilkan kode untuk berbagai bahasa termasuk C#, Python, TypeScript, Rust, dan lainnya, dengan fokus pada pembuatan Data Transfer Objects (DTO) yang bersih dan sederhana.
Kekhawatiran dan Kritik Komunitas
Tumpang Tindih dengan JSON Schema
Banyak pengembang mempertanyakan kebutuhan akan spesifikasi baru ketika JSON Schema sudah ada. Para kritikus menunjukkan bahwa pembedaan TypeSchema dari JSON Schema—yang menyatakan bahwa yang terakhir terutama merupakan sistem batasan yang tidak cocok untuk pembuatan kode—mungkin disalahartikan.
Keterbatasan Teknis
Beberapa masalah teknis telah muncul dari komunitas:
- Tipe Nullable : Spesifikasi ini tampaknya kurang mendukung nilai opsional dan tipe nullable, yang dianggap banyak pengembang sebagai kelemahan krusial.
- Kualitas Kode yang Dihasilkan : Kode yang dihasilkan di berbagai bahasa dikritik karena tidak cukup idiomatis. Contohnya:
- Kelas Kotlin dihasilkan sebagai kelas terbuka alih-alih kelas data
- Implementasi Go menunjukkan masalah duplikasi alih-alih menggunakan komposisi
- Generator Rust tampaknya memiliki masalah dengan parameter generik
Masalah Validasi
Poin perdebatan yang signifikan adalah tampaknya TypeSchema kurang memiliki kemampuan validasi. Sementara JSON Schema menyediakan fitur validasi yang kuat termasuk:
- Batasan untuk tipe data tertentu
- Dukungan untuk aturan validasi kompleks
- Ketergantungan antar bidang
- Validasi bersyarat (if/then/else)
TypeSchema tampaknya hanya fokus pada definisi struktur, yang berpotensi memerlukan logika validasi tambahan untuk diimplementasikan secara terpisah.
Potensi Penggunaan
Terlepas dari kritik, beberapa pengembang melihat nilai dalam TypeSchema untuk skenario tertentu:
- Pembuatan kode lintas bahasa yang cepat untuk struktur data sederhana
- Menjembatani kesenjangan antara bahasa pemrograman yang berbeda (misalnya, Python dan TypeScript)
- Situasi di mana aturan validasi kompleks bukan merupakan perhatian utama
Langkah ke Depan
Komunitas menyarankan bahwa daripada membuat spesifikasi yang sepenuhnya baru, pendekatan yang lebih baik mungkin:
- Membuat profil terbatas dari JSON Schema
- Fokus pada peningkatan generator kode yang sudah ada untuk JSON Schema
- Menambahkan ekstensi khusus bahasa ke standar yang ada
Seiring berlanjutnya diskusi, kesuksesan TypeSchema kemungkinan akan bergantung pada bagaimana ia mengatasi kekhawatiran komunitas ini dan apakah dapat memberikan keunggulan yang meyakinkan dibandingkan solusi yang ada dalam aplikasi dunia nyata.