Ada saat-saat ketika saya perlu mengubah nilai yang diteruskan ke metode dari dalam metode itu sendiri. Contohnya akan membersihkan string seperti metode ini di sini:
void SanitizeName(string Name)
{
Name = Name.ToUpper();
//now do something here with name
}
Ini murni tidak berbahaya karena Name
argumen tidak disahkan oleh referensi. Namun, jika, karena alasan tertentu, pengembang di masa depan memutuskan untuk memiliki semua nilai yang diteruskan oleh ref, sanitasi dari string akan memengaruhi nilai di luar metode yang dapat memiliki hasil yang merusak.
Oleh karena itu, alih-alih menugaskan kembali argumen itu sendiri, saya selalu membuat salinan lokal seperti:
void SanitizeName(string Name)
{
var SanitizedName = Name.ToUpper();
//now do something here with name
}
Ini memastikan bahwa mengubah nilai yang diteruskan tidak akan memengaruhi kejadian di luar metode, tetapi saya bertanya-tanya apakah saya terlalu paranoid tentang hal ini.
if (param == NULL) param = default_value;
?
by ref
yang tidak lulus itu cara sebelumnya, dan mengubah akses lokal ke akses non-lokal untuk beberapa alasan, ia selalu memeriksa konsekuensinya dengan hati-hati.
Name = Name.ToUpper();
membuat kode lebih sulit untuk diikuti di kepala Anda sebagai nilaiName
perubahan. Contoh kedua Anda tidak hanya lebih banyak bukti masa depan, lebih mudah untuk alasan apa yang dilakukannya