Jadi saya bertanya-tanya hari ini, di mana Anda akan menempatkan kelas utilitas dalam aplikasi ASP.NET MVC? Dengan kelas utilitas yang saya maksud adalah kelas yang bisa statis dan hanya digunakan untuk melakukan suatu fungsi. Seperti kelas untuk mengirim email yang menggunakan alamat, subjek, dan isi email sebagai argumen.
Saya akan berasumsi mungkin membuat folder terpisah dan namespace akan cukup baik, tetapi ingin mendapatkan pendapat semua orang
asp.net
asp.net-mvc-4
pengguna60812
sumber
sumber
Jawaban:
Kamu tidak. Dan teladan Anda sendiri adalah contoh yang sempurna untuk menunjukkan mengapa tidak.
Anda ingin mengirim email, bukan? Jadi, Anda membuat suatu tempat kelas statis
CommunicationUtilities
dengan statisSendEmail()
di dalamnya. Anda menggunakan metode ini dari beberapa kelas yang melakukan banyak hal, misalnya mengatur ulang kata sandi pengguna dan mengirimkannya yang baru melalui email. Sempurna.Sekarang, apa yang terjadi jika Anda ingin menguji unit Anda di kelas? Anda tidak bisa, karena setiap kali Anda ingin menguji metode yang mengatur ulang kata sandi, itu mengubah database (yang tidak cocok untuk uji unit), dan bahkan mengirim email (yang bahkan lebih buruk).
Anda mungkin telah membaca tentang Inversion of Control, yang memiliki manfaat membuat pengujian unit lebih mudah. Artikel tentang IoC akan menjelaskan kepada Anda bahwa alih-alih melakukan sesuatu seperti:
Anda melakukannya:
yang memungkinkan untuk menggunakan tiruan dan bertopik.
Cobalah untuk menerapkan IOC ke Anda
CommunicationUtilities
. Benar, kamu tidak bisa. Itu sebabnya rusak.sumber
Pertanyaannya adalah yang valid, bahkan jika contoh yang diberikan tidak. Jawaban yang diberikan oleh Maina adalah sempurna, dalam konteks yang sangat spesifik, yang tidak bagi saya, konteks yang tepat untuk kelas "utilitas" tersebut .
Secara pribadi, saya membuat folder
Helpers
di mana saya meletakkan fungsi sederhana untuk dipanggil dari mana saja, seperti ekstensi, dalam hal ini, ya, mereka statis.Sekarang, jika ada cara yang lebih baik, saya akan senang belajar, tetapi sejauh ini:
Sekarang, ekstensi hanyalah gula sintaksis, bisa juga merupakan fungsi klasik.
sumber
Tidak ada jawaban yang diberikan sebelumnya menjawab pertanyaan aktual. user60812 hanya bertanya di mana orang akan menempatkan kelas utilitas di dalam proyek MVC. Semua orang menggunakan contoh tunggal dan mengoceh tentang segala hal kecuali pertanyaan yang ada.
@ user60812, tergantung pada tingkat abstraksi yang Anda inginkan, saya akan:
Berikut ini tautan ke pertanyaan serupa dengan jawaban yang lebih baik.
Menurut opini saya
sumber
Jangan membuat kelas statis untuk utilitas. Statika buruk dalam banyak kasus. Jangan panggil mereka manajer juga. Apa pun yang sedang Anda kerjakan, itu harus ditempatkan di namespace logis.
Sebagai contoh:
Alamat email, subjek dan tubuh adalah masalah yang terpisah, oleh karena itu saya akan memiliki struktur kelas untuk itu, maka dari itu mengapa saya menggunakan
Email email
contoh di atas.sumber