Her zaman özellikleri ve yöntemleri kontrol etmeden Javascript'te ördek yazmayı nasıl kullanırsınız?
Basit: her zaman özellikleri ve yöntemleri kontrol etmeyin.
Ruby'de aradığınız şeye "tavuk yazma" denir. Dinamik olarak ördek türünde bir dilde, arayanın size uygun bir nesneyi geçtiğine güvenirsiniz. Sözleşmenin tarafını onurlandırmak arayanın işi.
Javascript ördek yazarak kullanır biliyorum ve ilk başta bu C # gibi güçlü yazılan dillere göre polimorfizmi kolay olacağını düşündüm.
Burada birden çok dikey yazım eksenini karıştırıyorsunuz. Dört dikey yazma ekseni vardır:
- Ne zaman : dinamik yazım (türler çalışma zamanına kadar bilinmiyor ve kontrol ediliyor) ve statik yazmaya (türler çalışma zamanından önce biliniyor ve kontrol ediliyor)
- Nedir : ördek tipleme (tipler davranışa dayalı ), yapısal tipleme (tipler yapıya dayalı ) ve nominal tipleme (tipler isme dayalıdır )
- Onları görebiliyor musun? açık yazarak (türlerin açık bir şekilde açıklanması gerekir) ve örtük yazarak (türler çıkarılır)
- güçlü yazım ve zayıf yazım karşılaştırması - buna çekici bir başlık veya parantez içinde bir açıklama vermediğimi fark etmiş olabilirsiniz, çünkü her biri evrensel olarak kabul edilen tek bir kesin tanıma sahip olan yedi terimin aksine, bu iki terim birbirleriyle çelişen yaklaşık bir düzine yarı yaygın belirsiz tanımlara sahip olmak; ideal olarak tümüyle bu şartları kaçınmalısınız ve eğer gerekir bunları kullanmak, tam da önce onları tanımlamak
C # 'dan bahsettiğiniz için: çoğunlukla statik olarak yazılmıştır, ancak tür üzerinden dinamik yazmayı destekler dynamic
, çoğunlukla nominal olarak yazılır, ancak anonim türler yapısal yazmayı kullanır ve sözdizimsel kalıpların (LINQ sorgu anlama sözdizimi gibi) her iki ördek olduğu iddia edilebilir. -tipli veya yapısal olarak yazılmış, çoğunlukla açıkça yazılır, ancak genel tür argümanları ve yerel değişkenler için örtük yazmayı destekler (yerel değişken durumu diğer dillere kıyasla oldukça garip olsa da, türü dışarıda bırakamazsınız, bunun yerine ona açık bir sözde tür vervar
, başka bir deyişle, örtük bir tür istiyorsanız, açıkça söylemeniz gerekir). Bununla birlikte, C #'ın güçlü veya zayıf bir şekilde yazılıp yazılmadığı, hangi iki terimin tanımını kullandığınıza bağlıdır, ancak C # 'da, özellikle güvenli olmayan dizi kovaryansı nedeniyle çok sayıda çalışma zamanı türü hatası olabileceğini unutmayın.
Sadece kontrol edemediğimi biliyorum, ancak javascript çalışma zamanı hatalarını takip etmek her zaman hatanın aslında kodda meydana geldiği yerde olmadığı için bir kabus olabilir.
Hata ayıklama, öğrenmesi kolay bir beceri değildir. Bununla birlikte, hata ayıklamayı kolaylaştırmak için teknikler vardır, örneğin Saff Squeeze , Kent Beck tarafından açıklanan ve hata ayıklama için yeniden düzenleme kullanan bir tekniktir:
Regresyon Testi ve Saf Sıkma
Kent Beck, Üç Nehir Enstitüsü
Özet: Bir arızayı etkin bir şekilde izole etmek için, sistem düzeyinde bir testle başlayın ve arızayı gösteren mümkün olan en küçük teste ulaşıncaya kadar aşamalı olarak satır içi ve budama yapın.