8 puan yazan GN⁺ 2024-10-09 | 1 yorum | WhatsApp'ta paylaş
  • Para tutarlarını işlemek yaygın bir bilgi işlem görevidir, ancak ana akım programlama dillerinde para tutarını ifade eden yerleşik bir veri tipi yoktur
  • Bu durum, taksitli ödeme, döviz işlemleri, komisyon işleme ve vergi tahsilatı gibi işlerde yuvarlama sorunlarına yol açabilir
  • Money, para tutarlarının hesaplanmasını ve dağıtılmasını kolaylaştırmaya yardımcı olan bir Kotlin kütüphanesidir
    • Para tutarlarının matematiksel işlemlerini, yüzde hesaplamalarını ve dağıtımını destekleyerek çeşitli kullanım senaryolarını modelleyebilir
    • Kripto paraları da varsayılan olarak destekler
  • Dağıtım özelliği
    • Kütüphanenin en büyük avantajlarından biri dağıtım özelliğidir
    • Bir para tutarını birden çok parçaya bölerken toplamın özgün tutarla aynı kalmasını garanti eder
    • Örneğin, bir müşteri 100,00 USD tutarındaki bir satın alımı üç taksitte ödediğinde, yuvarlama sorunlarından kaynaklanan kayıpları önleyebilir
  • Dağıtım yöntemi
    • allocate() yöntemi kullanılarak sonuçların özgün tutardan farklı olmaması garanti edilir.
    • Oranlara göre dağıtım yapmak için Percentage değerlerinden oluşan bir liste geçirilir.
    • Varsayılan olarak kütüphane farkı otomatik olarak dağıtır, ancak istenen dağıtım stratejisine göre ayarlanabilir.
  • Kapanış
    • Bu yazı, kütüphanenin özelliklerine kısa bir giriş niteliğindedir.
    • API'yi sade tutmayı ve Android geliştirme desteği ile kalıcılık ve serileştirme özelliklerini kademeli olarak genişletmeyi planlıyor.
    • Mevcut sürümün, Kotlin projelerinde para tutarlarını işleyen kişiler için faydalı olması umuluyor.

GN⁺ Özeti

  • Para tutarlarını ele almak programlamada yaygın bir iştir, ancak yuvarlama sorunları nedeniyle karmaşık hale gelebilir.
  • Money kütüphanesi, bu sorunları çözmek için tasarlanmış bir Kotlin kütüphanesidir ve para tutarlarının doğru şekilde dağıtılmasını ve hesaplanmasını destekler.
  • Bu kütüphane 306 para birimini ve 2283 kripto parayı destekler; Kotlin projelerinde para tutarlarını ele almak için kullanışlıdır.
  • Benzer işlevlere sahip diğer projeler arasında Java'daki Joda-Money kütüphanesi de bulunur.

1 yorum

 
GN⁺ 2024-10-09
Hacker News görüşleri
  • infix fonksiyonların kullanımı biraz tuhaf hissettiriyor

    • Kotlin'de API tasarlarken muhtemelen normal extension function veya extension property kullanırdım
    • Neden increaseBy ve decreaseBy yerine plus ve minus overload edilmemiş, merak ediyorum
  • Kütüphane için tebrikler ve paylaştığınız için teşekkürler

    • F# veya C#'taki birim sistemi para hesaplamalarına benzer olabilir
    • Rust'ta doğruluğa odaklanan bir backtester geliştiriyorum ve varlıklar para birimi cinsinden değerleniyor
    • Simülasyon sırasında borsanın her zaman çalıştığını varsaymanın mümkün olup olmadığını merak ediyorum
    • Döviz kurları için herkese açık veri olup olmadığını merak ediyorum
    • İşlem yaparken hangi kurun seçilmesi gerektiğini merak ediyorum
    • Yuvarlama için en iyi yöntemin olup olmadığını merak ediyorum
    • Vergileri hemen düşmenin iyi olup olmadığını merak ediyorum
    • Enflasyonu modelleyip modellememeyi düşünüyorum; şu anda yok sayıp sonunda düzeltmeyi planlıyorum
  • Rebol'ün para tipinin kullanılabilirliğini hatırlatıyor

    • Rebol'ün tip sistemi çok ifade gücü yüksekti
    • Bu tür bir deneyim sunan daha fazla kütüphane olmasını isterim
  • Para işlemede ortaya çıkan edge case'ler hakkında sorular

    • Farklı para birimlerindeki değerler toplanınca runtime exception oluşmasını beklerdim
    • $2.00'ı 3'e bölerken yuvarlama kuralının belirtilebilip belirtilemediğini merak ediyorum
    • Kullanıcı girdisini parse ederken ek basamakların nasıl ele alındığını merak ediyorum
    • Basamak kurallarının dışına çıkıldığında kütüphanenin nasıl davrandığını merak ediyorum
  • Kullanıcı tanımlı para birimi desteğini beğendim

    • Para birimi sembolleri bölgeye göre değiştiği için dikkatli olmak gerekiyor
    • CLDR veri kümesi, para birimi gösterimini ele alan çoğu implementasyonda kullanılıyor
  • Spreadsheet dillerinin parayı iyi desteklememesi garip

    • Spreadsheet ile otomasyon güzel ve tipleri ciddiye alan dillerde şaşırtıcı sonuçlar alınabiliyor
  • C#'ın decimal tipi para hesaplamaları için uygun

  • Yorumlarda çok şey öğrendim ve bu, kütüphanenin bir sonraki sürümüne yardımcı olacak

  • Kütüphaneden ziyade tüm edge case'leri ele alan kapsamlı bir test paketi isterdim

    • Sıkı tip kullanımına dair düşüncelerim var
    • Birçok düşük seviyeli programlama dilinin hâlâ uint64, size_t vb. kullanması garip geliyor
  • Tüm gereksinimleri karşılıyor gibi görünüyor ve para işlemenin temel zorlukları hakkında iyi bir tartışma içeriyor