Blank Import Gerçekten Gerekli mi: Side Effect Bağımlılıkları Yeniden Düşün

Anket

Blank import'ları kodunda ne sıklıkla kullanıyorsun?

0 oy

Bir modülü yan etkisi için import etmek, yani içindeki fonksiyonu ya da değişkeni kullanmaksızın import 'module' yazmak, yaygın bir pratiktir. Ama bu alışkanlık kodun okunabilirliğini bozmaya değer mi?

Blank import'lar genellikle iki yerde ortaya çıkar. Birincisi, bir kütüphanenin global state'ini başlatmak gerektiğinde; örneğin import 'reflect-metadata' TypeScript decorator'ları için gerekli metadata sistemi ayarlar. İkincisi, bir modülün yan etkisi başka yerde kullanılacağını bildiğinizde; mesela bir event listener kaydı ya da veritabanı bağlantı havuzunun kurulması.

Sorun şu: kod okuyan biri bu import satırını görünce "neden burada?" sorusunu sorar. Satırı silebilir mi? Güvenli mi? Başka yerde de import edilmiş mi? Bu belirsizlik teknik borç yaratır. Özellikle büyük projlerde, bir blank import'ı kaldırmak tüm uygulamayı kırabilir ve hiç kimse bunu fark etmeyebilir.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Bunu çözmek için üç yaklaşım var. İlki, yan etkiyi açık bir fonksiyon çağrısına dönüştürmek. import 'reflect-metadata' yerine import { setupMetadata } from 'reflect-metadata'; setupMetadata(); yazarsın. Kod niyeti açıkça ifade eder. İkincisi, yan etkiye ihtiyaç duyduğun modülde bir initialization fonksiyonu çağırmak; böylece bağımlılık açık olur. Üçüncüsü, eğer kütüphane bunu destekliyorsa, yan etkiyi bir plugin sistemine dönüştürmek.

Bir istisna vardır: polyfill'ler ve shim'ler. import 'core-js' gibi satırlar tamam; amacı belliydi. Ama kendi kodunda blank import'ları kullanıyorsan, bunu yeniden düşün.

Gerçek sorun şu: blank import'lar kodu sessizce kırılgan hale getirir. Bir ay sonra o satırın neden orada olduğunu kimse hatırlamaz. Yan etkiler gizli kalmalı değil, kod tarafından açık şekilde istenmeli.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz