Tanyakan pada diri Anda mengapa Anda perlu variabel seperti itu di tempat pertama.
Kemungkinan besar, Anda berbohong tentang data Anda: setiap kali Anda membutuhkan variabel "akhir waktu", Anda tidak mengacu pada akhir waktu yang sebenarnya; melainkan Anda mengungkapkan hal-hal seperti "tidak ada batas atas untuk tanggal ini", "acara ini berlanjut tanpa batas waktu", atau serupa.
Maka solusi yang benar adalah dengan mengekspresikan maksud ini secara langsung alih-alih mengandalkan nilai ajaib: gunakan jenis tanggal yang dapat dibatalkan (di mana null
menunjukkan "tidak ada tanggal akhir yang ditetapkan"), tambahkan bidang boolean "tidak terbatas", gunakan pembungkus polimorfik (yang dapat dapat berupa tanggal nyata atau nilai "tidak terbatas" khusus), atau apa pun yang ditawarkan oleh bahasa pemrograman Anda.
Tentu saja, solusi yang tepat tidak selalu layak, jadi Anda mungkin akhirnya menggunakan nilai ajaib, tetapi ketika Anda melakukannya, Anda harus memutuskan nilai yang sesuai berdasarkan per-kasus, karena tanggal mana yang dilakukan dan tidak masuk akal tergantung pada domain yang Anda modelkan - jika Anda menyimpan cap waktu log, 01/01/2999 adalah "akhir waktu" yang masuk akal; kemungkinan aplikasi Anda masih digunakan hampir 1000 tahun dari sekarang, menurut saya, praktis nol. Pertimbangan serupa berlaku untuk aplikasi kalender. Tetapi bagaimana jika perangkat lunak Anda menangani data ilmiah, katakanlah, prediksi jangka panjang tentang iklim Bumi? Mereka mungkin benar-benar ingin melihat seribu tahun ke depan. Atau selangkah lebih maju; astronomi, bidang yang sangat masuk akal dalam rentang waktu yang sangat besar dalam urutan miliaran tahun, baik ke jalan dan masa depan. Bagi mereka, 01/01/2999 adalah maksimum sewenang-wenang yang sangat konyol. OTOH, sistem kalender yang mampu menangani rentang waktu sepuluh triliun tahun ke depan hampir tidak praktis untuk sistem pelacakan penunjukan dokter gigi, jika hanya karena kapasitas penyimpanan.
Dengan kata lain, tidak ada pilihan tunggal terbaik untuk nilai yang salah dan sewenang-wenang menurut definisi. Inilah sebabnya mengapa sangat tidak biasa untuk melihat yang didefinisikan dalam bahasa pemrograman apa pun; yang biasanya tidak menamakannya "akhir waktu", melainkan sesuatu seperti DATE_MAX
(atau Date.MAX
), dan menganggapnya sebagai "nilai terbesar yang dapat disimpan dalam tipe data tanggal", bukan "akhir zaman" atau "tanpa batas".