- Türler, fonksiyonların ve verilerin uyması gereken katı sözleşmelerdir
- Tür, herhangi bir değerin ait olabileceği bir kümedir
- Türler fonksiyonlar aracılığıyla dönüştürülebilir ve bu sayede kapsamları değiştirilebilir
- Enjektif fonksiyon - kapsamı küçük bir türden daha büyük bir türe dönüştürme
- Sürjektif fonksiyon - kapsamı büyük bir türden daha küçük bir türe dönüştürme
- Bijektif fonksiyon - bire bir eşleme
- Mantığın girdileri ve çıktıları türlerle ifade edilebilir
- Bu, türler aracılığıyla mantığı soyutlamanın mümkün olduğu anlamına gelir
- Girdi ve çıktılar türlerle ifade edilip, mantık bunun üzerinden tasarlanabilir
- Temel veri türlerine isim verilerek başka türler olarak ayırt edilebilir
- Tür sistemi kullanılarak çeşitli problemler çözülebilir
- Generics kullanarak genelleştirme
- Phantom type kullanarak kapsam sınırlama
- Union type (veya toplam tür) kullanarak davranış sınırlama
- En küçük türü kullanarak TODO işleme
- Türleri kullanarak sonlu durum makinesi gerçekleştirme
- Dependent type kullanarak doğrulama
- Type-driven development, önce türleri tanımlayıp bunun üzerinden kod yazma metodolojisidir
- Type-driven development istenirse her yerde uygulanabilir ve her adımın sonucunu bir tür olarak tanımlamakla başlar
- Gereksinimleri analiz ederken onları türlerle soyutlamayı deneyin
- Aynı temel veri türü olsa bile anlamı farklıysa, bunları ayırt etmek için farklı türler olarak tanımlamak iyi olur
- Gereksinimleri analiz edip türleri düşündüyseniz, mantığı türlerle soyutlamayı deneyin
(String) -> List<Token>gibi bir biçimde soyutlanabilir
- Type-driven development, test-driven development ile iyi uyum sağlar
- Girdi ve çıktı sonuçlarını önceden tanımlayıp sonra kod yazma açısından type-driven development ile test-driven development benzerdir
- Type-driven development, tür sistemi sayesinde derleme zamanında güvenliği önceden kontrol edebiliyorsa; test-driven development ise yalnızca türlerle yakalanamayan hataları veya istisnai durumları test kodu ile yakalayabilir
- Tasarımcı açısından tür sistemini kullanmak, diğer geliştiriciler için kod kuralları oluşturmakla aynıdır
- Ancak türleri tek tek tanımlayıp sayıları gereğinden fazla artarsa veya tür tanımları karmaşıklaşırsa, bu durum kod yazmayı zorlaştırabilir ya da okunabilirliği düşürebilir; bu yüzden her zaman uygun dengeyi korumak önemlidir
2 yorum
Birebir fonksiyon, birbirinden farklı herhangi iki değişkenin görüntülerinin de farklı olduğu bir fonksiyonu ifade eder. Yani birebir fonksiyon
fiçin, tanım kümesiXiçinde yer alan tümavebelemanları açısındana ≠ bisef(a) ≠ f(b)olur. Kore lise matematiğinde "bire bir fonksiyon" olarak adlandırılan şey, enjeksiyon fonksiyonudur.Ayrıntılı açıklama için teşekkürler. :) Meğer ben yanlış anlamışım. Zaten birkaç kez dikkat çekilen bir konuydu; biraz daha çalışıp içeriği yeniden düzenleyeceğim.