Saya baru memulai dengan RxJava , implementasi Java dari ReactiveX (juga dikenal sebagai Rx and Reactive Extensions ). Sesuatu yang benar-benar memukul saya adalah ukuran besar RxJava ini Flowable kelas : memiliki 460 metode!
Agar adil:
Ada banyak metode yang kelebihan beban, yang menabrak jumlah total metode secara signifikan.
Mungkin kelas ini harus dibubarkan, tetapi pengetahuan dan pemahaman saya tentang RxJava sangat terbatas. Orang-orang yang membuat RxJava pasti sangat pintar, dan mereka mungkin dapat menawarkan argumen yang valid untuk memilih untuk membuat Flowable dengan banyak metode.
Di samping itu:
RxJava adalah implementasi Java dari Ekstensi Reaktif Microsoft , dan yang bahkan tidak memiliki kelas Flowable , jadi ini bukan kasus porting secara buta kelas yang ada dan mengimplementasikannya di Jawa.
[ Pembaruan: Titik sebelumnya dalam huruf miring faktual salah: kelas Microsoft's Observable , yang memiliki lebih dari 400 metode, digunakan sebagai dasar untuk kelas Observable RxJava , dan Flowable mirip dengan Observable tetapi menangani tekanan balik untuk volume data yang besar. Jadi tim RxJava mem - porting kelas yang sudah ada. Posting ini seharusnya lebih menantang desain asli dari kelas Observable oleh Microsoft daripada kelas Flowable RxJava .]
RxJava baru berusia kurang dari 3 tahun, jadi ini bukan contoh kode yang dirancang salah karena kurangnya pengetahuan tentang prinsip-prinsip desain kelas ( SOLID ) yang baik (seperti halnya dengan rilis awal Jawa).
Untuk kelas sebesar Flowable desainnya kelihatannya salah, tapi mungkin tidak; satu jawaban untuk pertanyaan SE ini Berapa batas jumlah metode kelas? menyarankan bahwa jawabannya adalah " Miliki metode sebanyak yang Anda butuhkan ".
Jelas ada beberapa kelas yang secara sah membutuhkan sejumlah metode yang adil untuk mendukung mereka terlepas dari bahasa, karena mereka tidak mudah terurai menjadi sesuatu yang lebih kecil dan mereka memiliki sejumlah karakteristik dan atribut yang adil. Misalnya: string, warna, sel spreadsheet, set hasil basis data, dan permintaan HTTP. Mungkin memiliki beberapa lusin metode untuk kelas untuk mewakili hal-hal itu tampaknya tidak masuk akal.
Tetapi apakah Flowable benar-benar membutuhkan 460 metode, atau apakah itu sangat besar sehingga itu merupakan contoh dari desain kelas yang buruk?
[Agar lebih jelas: pertanyaan ini secara khusus berhubungan dengan kelas Flowable RxJava daripada objek Allah pada umumnya.]