Mesin pinball fisik memiliki sensor di dalamnya yang mendeteksi ketika sesuatu di luar berusaha mengerahkan terlalu banyak pengaruh lintasan bola dengan mendorong atau memiringkan mesin. (Saya mengatakan terlalu banyak di sini karena pinball memiliki tradisi panjang tentang sejumlah gerakan yang dapat diterima, terutama ketika bola digantung pada sesuatu.) Ketika mesin masuk ke keadaan miring, apa pun yang bisa mencetak pemain lebih banyak poin adalah dinonaktifkan sampai bola jatuh dari bagian bawah tabel. Ini biasanya disertai dengan lampu "Tilt" pada gim dan terkadang bel peringatan. Anggap saja setara dengan pinball untuk menaikkan pengecualian.
Metafora Martin tegang karena ErrorCode.OK
, mungkin, valid status
dan bukan sesuatu yang mencoba memaksa fungsi melakukan sesuatu yang seharusnya tidak. Dengan kata lain, input itu tidak mencoba untuk mendapatkan fungsi untuk mengembalikan pesan kesalahan untuk argumen yang hilang.
Sisa dari ini tidak menjawab pertanyaan Anda, tetapi mungkin memberi Anda alasan untuk membaca sisa buku dengan mata kritis. Saya tidak memiliki akses ke buku untuk melihat apakah teks di sekitar contoh itu melambaikan tangan, tetapi jika tidak, metode ini melakukan hal-hal yang tidak sesuai dengan judul:
Pertama adalah bahwa ia tidak memperlakukan input atau status yang dianggap tidak valid sebagai kondisi yang luar biasa dan mengeluh tentang hal itu. Jika dokumentasi metode mengatakan itu hanya boleh dipanggil ketika objek status
dalam keadaan kesalahan, itu jelas masalah logika dalam kode panggilan yang perlu diperbaiki.
Yang kedua adalah mengembalikan string yang sama validnya dengan yang lain tetapi secara efektif berfungsi sebagai konstanta ajaib. Penelepon yang ingin tahu apakah menggunakan metode ini adalah suatu kesalahan harus memeriksa isi nilai kembali atau dengan cerdik meneruskannya kepada manusia untuk membacanya (mis., Operation result:
Tanpa informasi tambahan).
Yang ketiga opsional adalah bahwa jika kompilator mengharapkan cakupan penuh dari nilai-nilai yang disebutkan, menggunakan default
untuk menangkap kasus-kasus yang tidak tercakup jauh lebih mudah dibaca daripada harus menghitungnya secara individu atau dalam kelompok. (Sisi filpnya adalah bahwa mungkin lebih baik membiarkan kompiler mengeluh sehingga menambahkan status kedua yang bukan kesalahan akan memaksa programmer untuk secara eksplisit menyatakan bagaimana penanganannya.)