Saya belum pernah mendengar Command-Query-Separation (CQS) sebelumnya, tetapi tampaknya itu berhubungan dengan Prinsip Tanggung Jawab Tunggal (SRP), yang menyatakan bahwa fungsi / kelas idealnya harus bertanggung jawab untuk melakukan satu hal dan satu hal saja .
Jika kode perintah Anda adalah 20 baris kode dan kode kueri adalah 30 baris lainnya dan semuanya berada dalam satu fungsi, jelas Anda melanggar SRP dan saya akan menganggap CQS juga dan kedua potongan logika tersebut harus dipisahkan satu sama lain .
Namun, sesuai dengan contoh hipotetis Anda, saya kemungkinan besar akan membuat metode pembungkus yang akan menggabungkan perintah dan permintaan Anda sehingga KERING tidak dilanggar di banyak tempat dalam kode. Saya juga tidak akan menganggap ini sebagai pelanggaran SRP (dan mungkin CQS), karena pembungkus masih hanya memiliki satu tanggung jawab: untuk menggabungkan perintah dengan kueri dan membuat abstraksi tingkat yang lebih tinggi yang lebih mudah dikonsumsi.
Saya pikir metode pembungkus adalah solusi yang dapat diterima dan untuk menggambarkan itu, mari kita ambil contoh Anda selangkah lebih maju. Bagaimana jika Anda harus menjalankan 2 kueri alih-alih 1 dan kemudian melakukan tindakan perintah berdasarkan itu. Jadi 2 baris kode Anda akan menjadi 6 atau 8. Bagaimana jika ada beberapa validasi data / memeriksa antara satu dan yang lain, jadi sekarang Anda memiliki 15 baris kode. Apakah Anda berpikir dua kali tentang membuat pembungkus yang melakukan semua itu, daripada menaburkan 15 baris dalam beberapa file?