Ini disarankan dalam pengembangan C ++, dan Stroustrup membahasnya dalam "Desain dan Evolusi C ++", halaman 153 dan selanjutnya. Proposal ini dibentuk dengan baik, dan mengacu pada pengalaman sebelumnya dengan Ada. Itu tidak diadopsi.
Alasan terbesar adalah bahwa tidak ada yang ingin mendorong fungsi dengan sejumlah besar parameter. Setiap fitur tambahan dalam bahasa memerlukan biaya, dan tidak ada keinginan untuk menambahkan fitur untuk membuatnya lebih mudah untuk menulis program yang buruk.
Itu juga menimbulkan pertanyaan tentang apa nama parameter kanonik itu, khususnya dalam header file kode konvensional. Beberapa organisasi memiliki nama parameter yang lebih panjang dan lebih deskriptif dalam file .h, dan lebih pendek dan lebih mudah untuk mengetik nama dalam file .cpp (ganti akhiran file yang diinginkan). Membutuhkan hal yang sama akan menjadi biaya tambahan pada kompilasi, dan menggabungkan nama-nama di antara file sumber dapat menyebabkan bug halus.
Itu juga dapat ditangani dengan menggunakan objek daripada panggilan fungsi. Alih-alih panggilan GetWindow dengan selusin parameter, buat kelas Window dengan selusin variabel pribadi, dan tambahkan setter yang diperlukan. Dengan merantai setter, mungkin untuk menulis sesuatu seperti my_window.SetColor(green).SetBorder(true).SetBorderSize(3);
. Mungkin juga memiliki fungsi yang berbeda dengan standar berbeda yang memanggil fungsi yang benar-benar berfungsi.
Jika Anda hanya khawatir tentang efek dokumentasi contentFetcher.DownloadNote(note, manual : true);
, Anda selalu dapat menulis sesuatu seperti contentFetcher.DownloadNote(note, /* manual */ true);
, jadi itu bahkan tidak sangat membantu dalam dokumentasi.