Saya akan berdebat ini di sepanjang baris berikut:
- Mengapa metode Anda mengembalikan beberapa nilai? Kohesi macam apa yang sedang kita bicarakan - apakah nilai-nilai itu benar-benar menjadi bidang pada satu kelas, atau apakah mereka hanya secara kebetulan dikembalikan dengan metode yang sama, tetapi sebaliknya tidak terkait? Jika ini yang terakhir, Anda mungkin ingin mempertimbangkan untuk membagi metode menjadi dua metode. Sunting: gunakan penilaian Anda di sini; kadang kohesi "kebetulan" bisa menjadi pilihan terbaik. Pilihan lain adalah dengan menggunakan pasangan atau tuple konstruk, meskipun dalam OOP, ini biasanya tidak terlihat di API publik (beberapa pengecualian penting sebagai koleksi standar, dll)
- Jika nilai-nilai memang layak untuk membentuk kelas, saya mungkin akan menyarankan agar tidak menggunakan kelas batin. Kelas dalam biasanya digunakan sebagai detail implementasi internal, yang disembunyikan dari luar. Apakah ada alasan mengapa hasil ini tidak boleh menjadi kelas "penuh," sendiri?
- Selain menyimpan data, operasi apa yang berlaku untuk kelas baru ini? Dalam desain berorientasi objek, Anda ingin memiliki perilaku terkait dekat dengan data yang relevan (yang tampaknya juga menjadi niat Anda). Haruskah metode yang Anda maksud tidak tinggal di kelas ini?
Untuk meringkas, saya akan melihat apakah saya bisa mengubah "objek data" ini menjadi kelas yang lengkap dengan data dan perilaku. Sebagai komentar tambahan, Anda mungkin ingin membuat kelas tidak dapat diubah, karena statusnya diatur sekali. Menjadikannya tidak berubah akan membantu mencegahnya diatur secara tidak benar, atau dimodifikasi kemudian (katakanlah, seseorang mengatur salah satu bidang menjadi nol dan meneruskannya).
Sunting: Seperti yang ditunjukkan oleh Patkos Csaba, prinsip yang diterapkan di sini adalah Prinsip Tanggung Jawab Tunggal ( SRP ) - kelas yang Anda coba buat harus benar-benar memiliki satu tanggung jawab (didefinisikan sebagai alasan untuk berubah ). Pedoman desain ini akan membantu Anda mengetahui apakah dua bidang Anda termasuk dalam satu kelas, atau tidak. Untuk tetap menggunakan contoh Wikipedia, kelas Anda dapat dilihat sebagai jenis laporan, dalam hal ini sesuai dengan SRP, tetapi sulit untuk berkomentar tanpa informasi lebih lanjut.
BitInteger[] java.math.BigInteger.divideAndRemainder(BitInteger val)
. Ini mengembalikan 2 bilangan bulat sebagai nilai pengembaliannya dalam array.