- Bu quiz, JavaScript'in Date sınıfının çeşitli girdi durumlarında nasıl davrandığına odaklanıyor
- Kullanıcının beklemediği girdi değerleri (ör. "wtf" vb.) geldiğinde Date sınıfının döndürdüğü sonuçlar, istisna üretip üretmediği, iç işleme biçimi gibi deneyler içeriyor
- Bu quiz sayesinde JavaScript Date'in istisnai anlarını, ayrıştırma stratejilerini, standarda uyumsuzluklarını ve beklenmedik davranış kalıplarını kolayca kavrayabilirsiniz
- JavaScript geliştiricileri ve test sorumluları için, gerçek programlarda ortaya çıkabilecek tarih işleme hataları ve belirsizlikleri azaltmaya yönelik anlayışı artırmayı amaçlıyor
1 yorum
Hacker News yorumu
undefined behaviour'ı teknolojinin anlamsızlığına dair kesin kanıt gibi gördüğü WAT memi aklıma geldi. Aslında mesele sadece insanların teknoloji kavramını yanlış anlamasıydı. Tuğlayla su taşınamaması komik bir şey değil ama nedense herkes JavaScript’in tüm ~hataları~ ya hata olarak yakalamasını ya da kendi kendine düzeltmesini bekliyordu. Güzel bir hedef ama bu mümkün değilse bununla gurur duymak gerektiğini düşünmek de tuhaf bir bakış açısıydı. Bu atmosfer çok uzun sürdüinstantdüzeyinde kullanmanın uygun olup olmadığını düşünmek iyi olur. UTC ISO 8601 dizeleri ya da Unix timestamp kullanırsanız karmaşıklığın büyük kısmı ortadan kalkar ya da en azından yazılımın sadece bir bölümünde ele alınır. Tabii her zaman böyle değil (bir keresinde kullanıcının mola saatinin 1-5 arası iki aralığı kapsaması gerekiyordu ve DST sınırında gerçekten işkenceydi). Yine de çoğu durumda ilgilenilecek alanı en aza indirmenin bir yolunu bulmanın mümkün olduğunu deneyimledim. Hiç doğrulanmamış kullanıcı girdisini doğrudan date parser’a veriyorsanız, kullanım şekli yanlıştırdate,time,datetimekavramlarını birbirine karıştırıp daha büyük bir kafa karışıklığı yaratıyorlar. “time” ve “date” diye bir ayrım olmaması gerektiği yönünde açıklamalar da duydum ama bu benim deneyimimle hiç örtüşmüyorDate.parse()içine atmıyorsanız o kadar da büyük bir sorun değil. Pratikte zaten uzmanlaşmış tarih kütüphaneleri kullanılıyor. Date’in iyi sayılan tarafları bile o kadar iyi değil çünküarray.filtervestructuredcopyekledik; geri kalanını ise pratik faydası yok ve saldırı yüzeyini artırıyor diye tamamen görmezden geldik. Sonra TypeScript çıktı ve bunun JS tarihindeki en büyük kaçırılmış fırsat olduğunu düşünüyorum. Bugün bile JS’te düzgün kod yazmak aslında dilin %1’ini dikkatle kullanmak demek. Onu bile çok temkinli kullanmak gerekiyor