menurut Apakah ada pedoman tentang berapa banyak parameter yang harus diterima fungsi? , suatu metode tidak boleh memiliki terlalu banyak parameter. Namun, beberapa jawaban menyarankan masalah ini dapat diselesaikan dengan pola builder:
Builder b=new Builder();
b.setParm1("a");
b.setParm2("b");
.
.
.
Obj obj=b.createObj();
atau merangkum parameter dalam satu objek.
ObjectParam op=new ObjectParam();
op.param1="a";
op.param2="b";
.
.
.
obj.f(op);
Tapi saya ragu apakah ini menyelesaikan masalah, karena saya pikir metode tentang hanya menyelaraskan parameter dengan cara yang lebih baik (yaitu: dari horizontal ke vertikal), tetapi tidak mengubah sifat bahwa tugas tergantung pada terlalu banyak parameter. Dan jika saya ingin rantai parameter terlihat lebih baik, saya dapat menggunakan baris baru untuk setiap parameter seperti itu:
https://softwareengineering.stackexchange.com/a/331680/248528
jadi pertanyaan saya adalah, apakah "terlalu banyak parameter" masalah visual (sulit untuk membaca satu baris kode), atau masalah logis (sifat tugas tergantung pada terlalu banyak parameter dan kebutuhan rusak)? Jika ini lebih tentang masalah visual, apakah baris baru untuk setiap parameter menyelesaikan masalah?
sumber
Jawaban:
Ini adalah masalah logis yang pertama dan terpenting (yang sering kali disertai dengan masalah visual). Solusi yang salah untuk ini adalah dengan mencoba hanya memperbaiki masalah visual dengan
Mengenkapsulasi parameter dalam objek tidak berarti menempatkan lima parameter dalam wadah arbitrer dengan beberapa nama yang tidak berarti seperti
ObjectParam
. Sebagai gantinya, mengenkapsulasi sekelompok parameter dalam objek harus membuat abstraksi baru (atau menggunakan kembali yang sudah ada). Sukamerangkum tiga parameter "X, Y, Z" dalam parameter "posisi tipe
Point3D
, ataumengenkapsulasi parameter "startDate, endDate" pada suatu objek
DateInterval
ataumengenkapsulasi parameter
documentTitle, documentText, author
dalam objek yangDocument
mengelompokkan parameter ini bersama-samaJika metode yang dipertaruhkan memiliki banyak parameter yang tidak terkait Anda tidak dapat datang dengan nama pengelompokan yang baik, maka mungkin memiliki terlalu banyak parameter dan terlalu banyak tanggung jawab.
sumber
Suatu metode yang mengambil banyak parameter pada dasarnya, sebuah langkah dalam arah yang berlawanan dari konvensi atas pendekatan konfigurasi , yang berpusat pada penyederhanaan panggilan semacam itu tanpa kehilangan kapasitas untuk mengubah nilai-nilai yang diperlukan melalui penggunaan default yang masuk akal .
Dengan kata lain, Anda jelas tidak ingin kehilangan fleksibilitas, tetapi Anda hampir pasti tidak perlu setiap parameter dilewatkan secara dinamis. Banyak parameter yang baik kemungkinan akan diperbaiki / statis. Ambil program zip sebagai contoh. Ya, mungkin Anda mungkin ingin mengubah algoritma kompresi, tingkat kompresi, jumlah core CPU yang didedikasikan untuk tugas, .. apa pun. Intinya adalah bahwa tidak ada yang ingin menentukan semua parameter ini masing-masing dan setiap kali Anda perlu membuat file zip, secara efektif mengurangi panggilan dengan memberikan esensi kosong (yaitu nama file tujuan zip, file untuk ditambahkan ke file zip).
Alasan Anda menggunakan konvensi melalui pendekatan konfigurasi adalah alasan yang sama mengapa Anda tidak harus memiliki metode yang membutuhkan banyak parameter. Singkatnya, kesederhanaan itu baik.
sumber