Apakah Anda memiliki pedoman tim tentang pengecualian? [Tutup]

8

Tim saya baru-baru ini mewarisi proyek dari tim di mana jumlah pengembang turun sangat rendah sehingga mereka harus menurunkan beberapa pekerjaan. Salah satu proyek yang kami warisi adalah proyek yang berserakan dengan kode bersarang, dan penanganan pengecualian yang mengerikan (Pengecualian berlaku ditangani sebagai pernyataan goto dan dengan demikian digunakan sebagai bagian dari aliran program normal.).

Semua dalam semua itu adalah bola kode berbulu seseorang telah batuk selama beberapa tahun.

Sekarang kami telah memiliki beberapa pedoman tim untuk beberapa waktu, tetapi semua berkaitan dengan struktur objek, gaya pengkodean dan apa yang tidak. Tapi kami belum membahas penanganan pengecualian.

Jadi saya ingin tahu apakah Anda memiliki pedoman dalam tim Anda tentang penanganan pengecualian, dan jika demikian, bagaimana Anda menegakkannya?

Morten
sumber
Maksud Anda penegakan sosial atau penegakan teknologi? Ada banyak alat analisis kode statis untuk mendeteksi pola Pengecualian yang disalahgunakan.
MatthewMartin
Baik keduanya benar-benar.
Morten
Mungkin lebih mudah untuk refactor kode untuk memeriksa prasyarat pertama, dan kembali dari fungsi lebih awal jika ada prasyarat yang tidak terpenuhi. Juga, sejumlah guru terkemuka menganggap finally(logika rollback) sebagai bagian yang lebih berharga dari sistem penanganan pengecualian.
rwong

Jawaban:

4

Meskipun mereka bukan pedoman resmi pada tim mana pun yang pernah saya ikuti, saya merasa bahwa pengecualian hanya boleh digunakan untuk kondisi yang benar-benar luar biasa, atau ketika Anda benar-benar (karena alasan tertentu) harus mengangkat tangan dan membiarkan penelepon Anda ( atau muncul dari titik Anda saat ini, berpotensi sampai ke pengguna) tahu bahwa sama sekali tidak ada cara komponen tertentu dapat berfungsi dalam kondisi saat ini dan tidak mungkin untuk pulih tanpa semacam intervensi dari luar (modul lain atau pengguna) .

Thomas Owens
sumber
1

Kami tidak memiliki aturan penanganan perkecualian khusus untuk tim kami, kecuali yang biasa: jangan gunakan pengecualian untuk perilaku 'normal', jangan hanya diam-diam menelan pengecualian, dll.

Analisis statis dapat membantu Anda menangkap beberapa dari mereka (tergantung pada bahasa yang Anda gunakan) tetapi Anda akan lebih aman dengan ulasan kode.

Xavier Nodet
sumber
1

Saat ini kami tidak memiliki pedoman eksplisit, terutama karena tidak ada seorang pun di tim saya yang melakukan kesalahan. (Tidak seperti banyak topik lain, ada konsensus umum kapan dan bagaimana pengecualian harus digunakan)

Tapi saya pasti akan menerapkannya pada hari yang sama saya melihat pengecualian dilecehkan sebagai goto.

pengguna281377
sumber
0

Saya pikir pengecualian harus memeriksa kembali Pengecualian. Saya pikir itu kasar dan menghasilkan overhead saat menggunakan pengecualian sebagai alur kerja dalam kode Anda. Jadi, pertahankan kata-katanya, dan gunakan hanya ketika sesuatu yang tidak terduga terjadi.

Catatan: baki untuk menghindari kesalahan yang paling umum, seperti tidak meneruskan database koneksi ke suatu fungsi, atau hal-hal seperti itu. Melainkan menggunakannya ketika primaryKey tidak ada dan Anda perlu melakukan sesuatu.

guiman
sumber
0

Saya merasa kasihan kepada Anda bahwa Anda harus mewarisi kode dari orang yang menyalahgunakan pengecualian menjadi pernyataan seperti goto.

Saya selalu berusaha untuk menangkap mereka ketika input pengguna atau sesuatu di luar kendali saya dapat terjadi (mis: IOExceptions), tetapi apa pun yang bisa menjadi kesalahan pengkodean (mis: NullPointerException) adalah sesuatu yang saya coba tangkap dengan menegaskan pada awal pengembangan.

Performa hit dari pengkodean semacam itu adalah negatif yang sangat besar. Saya bertanya-tanya apakah perusahaan itu menyusut karena pengembang yang mengerikan membuat diri mereka menjadi berantakan di luar pemahaman ...

air
sumber