Saya mendapat kesan bahwa sekarang semua orang setuju bahwa pepatah ini adalah kesalahan. Tetapi saya baru-baru ini melihat jawaban ini yang memiliki komentar "bersikap lunak" terangkat 137 kali (pada hari ini).
Menurut pendapat saya, keringanan hukuman dalam apa yang diterima browser adalah penyebab langsung dari kekacauan total yang HTML dan beberapa standar web lainnya beberapa tahun yang lalu, dan baru-baru ini mulai mengkristal dengan baik dari kekacauan itu. Cara saya melihatnya, bersikap lunak dalam apa yang Anda terima akan mengarah ke ini.
Bagian kedua dari pepatah adalah "membuang input yang salah secara diam-diam, tanpa mengembalikan pesan kesalahan kecuali ini diminta oleh spesifikasi" , dan ini terasa ofensif garis batas. Setiap programmer yang telah membenturkan kepalanya ke dinding ketika sesuatu gagal diam-diam akan tahu apa yang saya maksud.
Jadi, apakah saya benar-benar salah tentang ini? Haruskah program saya lunak dalam menerima dan menelan kesalahan secara diam-diam? Atau apakah saya salah menafsirkan apa artinya ini?
Pertanyaan aslinya mengatakan "program", dan saya mengambil poin semua orang tentang itu. Masuk akal jika program bersikap lunak. Apa yang sebenarnya saya maksudkan adalah API: antarmuka yang terpapar ke program lain , bukan orang. HTTP adalah contohnya. Protokol adalah antarmuka yang hanya digunakan oleh program lain. Orang tidak pernah secara langsung memberikan tanggal yang masuk ke tajuk seperti "Jika-Dimodifikasi-Sejak".
Jadi, pertanyaannya adalah: haruskah server menerapkan standar lebih lunak dan memungkinkan tanggal dalam beberapa format lain, selain yang sebenarnya diperlukan oleh standar? Saya percaya "bersikap lunak" seharusnya berlaku untuk situasi ini, bukan antarmuka manusia.
Jika server lunak, mungkin tampak seperti perbaikan keseluruhan, tapi saya pikir dalam praktiknya hanya mengarah pada implementasi klien yang akhirnya bergantung pada keringanan hukuman dan dengan demikian gagal bekerja dengan server lain yang lunak dengan cara yang sedikit berbeda.
Jadi, haruskah server yang mengekspos beberapa API bersikap lunak atau apakah itu ide yang sangat buruk?
Sekarang ke penanganan input pengguna yang lunak. Pertimbangkan YouTrack (perangkat lunak pelacakan bug). Ini menggunakan bahasa untuk entri teks yang mengingatkan pada penurunan harga. Kecuali bahwa itu "lunak". Misalnya menulis
- foo
- bar
- baz
adalah tidak cara didokumentasikan membuat daftar bullet, namun itu bekerja. Akibatnya, akhirnya banyak digunakan di seluruh bugtracker internal kami. Versi berikutnya keluar, dan fitur ringan ini mulai bekerja sedikit berbeda, mematahkan banyak daftar yang (salah) menggunakan fitur (non) ini. Cara terdokumentasi untuk membuat daftar berpoin masih bekerja, tentu saja.
Jadi, haruskah perangkat lunak saya lunak dalam input pengguna apa yang diterima?