Apa arti "TILT" dalam komentar?

9

Saya sedang membaca Clean Code oleh Robert C. Martin, dan frasa tersebut secara TILTtak terduga muncul di beberapa contoh kode. Contoh (ada di Jawa, omong-omong):

    ...
    public String errorMessage() {
      switch (status) {
        case ErrorCode.OK:
          // TILT - Should not get here.
          return "";
        case ErrorCode.UNEXPECTED_ARGUMENT:
          return "Unexpected argument";
        case ErrorCode.MISSING_ARGUMENT:
          return "Missing argument";
        ...
    }
    ...

Dari konteksnya, saya menebak TILTmenunjuk keadaan yang tidak dapat dijangkau dan hanya dimasukkan untuk memenuhi kompiler (misalnya, dalam kode di atas, TILTmuncul dalam ErrorCode.OKkasus karena seharusnya tidak ada pesan kesalahan jika keadaan itu OK), tetapi Saya tidak yakin.

Apakah ada yang tahu apa TILTartinya / artinya?

Kyle Lin
sumber
1
Kemungkinan jawaban terkait di gaming.stackexchange.com
rwong
9
Ini mungkin mengacu pada kemiringan pinball, bukan kemiringan poker.
Telastyn

Jawaban:

13

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 statusdan 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 statusdalam 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 defaultuntuk 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.)

Blrfl
sumber
2
Saya tidak memiliki salinan Kode Bersih di tangan, tetapi Anda melewatkan kemungkinan keempat: bahwa metode ini hanyalah fungsi pembantu untuk menghasilkan pesan kesalahan yang dapat dibaca untuk sesuatu seperti objek pengecualian, yang akan membuatnya sangat masuk akal seperti itu , tanpa "melambaikan tangan" diperlukan.
Doc Brown
@DocBrown Itu poin yang adil, meskipun hal berikutnya yang bertanya-tanya adalah mengapa mengapa objek pengecualian memungkinkan dirinya dibangun dengan status yang tidak luar biasa.
Blrfl
2
FYI: Sensor kemiringan klasik adalah pendulum logam yang dibiarkan berayun bebas dalam batas-batas cincin logam. Membenturkan mesin akan meningkatkan ayunan pendulum, dan jika itu membuat kontak listrik dengan cincin, maka Anda kehilangan bola itu. Tidak menabrak mesin untuk jangka waktu tertentu akan memungkinkan ayunan untuk mereda. Pendulum itu tidak terlihat oleh pemain: Anda hanya harus belajar dengan mencoba-dan-kesalahan berapa banyak menabrak mesin akan mentolerir.
Solomon Slow