Kami sedang berdiskusi dengan rekan kerja kami tentang apa artinya jika nama metode dimulai dengan "Coba".
Ada beberapa pendapat berikut:
- Gunakan "Coba" ketika metode dapat mengembalikan nilai nol.
- Gunakan "Coba" ketika metode tidak akan melempar pengecualian.
Apa definisi resmi? Apa yang "Coba" katakan dalam nama metode? Apakah ada pedoman resmi tentang ini?
c#
naming-conventions
ms007
sumber
sumber
Jawaban:
Ini dikenal sebagai pola TryParse dan telah didokumentasikan oleh Microsoft. Halaman Pengecualian dan Kinerja MSDN resmi mengatakan :
Jadi, jika Anda memiliki kode yang menggunakan case biasa berarti bahwa ia mungkin mengeluarkan pengecualian (seperti parsing int), pola TryParse masuk akal.
sumber
(Dikoreksi) Ada pedoman resmi, seperti yang disarankan Erik.
Ketika saya melihat
TrySomething
metode, saya menganggapnyabool
Something
metode, yang memungkinkan saya untuk menangani pengecualian apa pun sendiri. (sunting, disarankan oleh Jesse Webb)sumber
TryFoo
metode, akan adaFoo
metode serupa yang memungkinkan saya untuk menangani pengecualian `` sendiri. Tanda tangan metode ini kemungkinan akan berbeda sehingga penggunaannya tidak dapat dipertukarkan tanpa perubahan kode lainnya.Saya pikir Anda harus menggunakan
try
ketika Anda ingin melanjutkan. Tidak masalah bahwa suatu metode mengembalikan beberapa nilai atau tidak.Kasus 1: jika kembali baik, Anda dapat melanjutkan dengan beberapa cara.
Kasus 2: jika tidak kembali: masih baik; Anda dapat melanjutkan dengan cara lain.
Dan jika Anda mengharapkan beberapa nilai sebagai output dari metode itu maka gunakan
out
parameter tersebut.Contoh
sumber
Anda harus menggunakan "Coba" dalam nama metode, ketika Anda ingin memanifestasikan fakta bahwa metode invokation dapat menghasilkan hasil yang tidak valid. Mengikuti standar. NET itu, omong-omong, bukan fungsi yang menimbulkan pengecualian, tetapi fungsi yang mengembalikan beberapa
VALID
atauNON_VALID
, dari perspektif program, nilai.Pada akhirnya, ini semua tentang konvensi penamaan yang Anda putuskan untuk digunakan dalam grup Anda.
sumber
Pastikan
try
Anda memasukkan nama metode Anda jika:bool TrySomething(input, out yourReturn)
Jadi pada dasarnya jika kita gunakan
try
-metode kita hanya mendapatkan hasil boolean kembali.Jadi kode berikut tidak akan memberikan pengecualian:
Sedangkan kode ini dapat (dan dalam hal ini akan) memberikan pengecualian:
Menggunakan metode Coba adalah cara yang lebih aman dan lebih defensif untuk kode. Cuplikan kode # 2 membutuhkan lebih banyak kinerja untuk dijalankan jika bukan bilangan bulat.
sumber
int number = int.Parse(input);
jika Anda menginginkannya lebih bermakna dalam konteks ini.int number;
deklarasi sebelum blok coba dannumber = ...
tugas.TryLoadFile(path, out file)
woah, dari RAM. Jadi penelepon akan mengharapkan tidak ada kesalahan untuk jalur yang buruk atau akses ditolak, tetapi pengecualian untuk hal-hal aneh yang juga bisa salah. Dan mendokumentasikannya.Paman Bob memberikan contoh di bawah ini dalam bukunya Clean Code . Setiap kali kami mengharapkan pengecualian dilemparkan, kami dapat menggunakan
Try
awalan ke nama metode:Dan kemudian (diadaptasi):
The
tryToShutDown
Metode tidak membuat penanganan kesalahan, karena itulah tanggung jawabsendShutDown
metode.The
TryParse
pola Microsoft melanggar pedoman kode yang bersih yang mengatakan bahwa kita harus menghindari parameter output.Jika kami tidak mengembangkan versi baru C #, kami tidak harus mematuhi semua pedoman Microsoft. Terkadang mereka bukan yang terbaik.
sumber