Bu, bir tür OOP ve / veya girişimci / uygulama bakış açısından olacaktır ve belirli alanlarda / alanlarda uygulanabilir olmayabilir, ancak ilkel saplantı kavramını ortaya koymak istiyorum .
Uygulamanızda farklı bilgi türleri için farklı veri türleri kullanmak iyi bir fikirdir. Bununla birlikte, bazı ciddi performans sorunlarınız (ölçülmüş ve doğrulanmış vb.) Olmadıkça, bunun için yerleşik tipleri kullanmanız muhtemelen iyi bir fikir DEĞİLDİR.
Bizim uygulamada Kelvin cinsinden modeli sıcaklıklara istiyorsak, bir kullanmak OLABİLİR ushort
ya uint
ya da göstermek için benzer bir şey "negatif derece kavramını Kelvin saçma ve etki alanı mantık hatası". Bunun arkasındaki fikir ses, ama sonuna kadar gitmiyorsun. Yaptığımız şey, negatif değerlere sahip olamayacağımızdır, bu yüzden derleyiciyi Kelvin sıcaklığına negatif bir değer atamayacağından emin olmak için derleyiciyi alabilirsek kullanışlıdır. Sıcaklıklarda bitsel işlemleri yapamayacağınız da doğru. Ve bir sıcaklığa (K) bir ağırlık ölçüsü (kg) ekleyemezsiniz. Fakat hem sıcaklığı hem de kütleyi uint
s olarak modellerseniz , bunu yapabiliriz.
DOMAIN varlıklarımızı modellemek için yerleşik türlerin kullanılması, bazı dağınık kodlara, bazı cevapsız kontrollere ve kırılmış değişmezlere yol açmak zorundadır. Bir tür, varlığın BAZI bir kısmını yakalasa bile (negatif olamaz), başkalarını özlemek zorundadır (rastgele aritmetik ifadelerde kullanılamaz, bir bit dizisi, vb. Olarak değerlendirilemez).
Çözüm, değişmezleri içine alan yeni tipler tanımlamaktır . Bu şekilde paranın para olduğundan ve mesafelerin mesafeler olduğundan emin olabilirsiniz ve bunları bir araya ekleyemezsiniz ve negatif bir mesafe oluşturamazsınız, ancak negatif miktarda para (veya borç) oluşturabilirsiniz. Tabii ki, bu türler dahili türleri dahili olarak kullanır, ancak bu istemcilerden gizlenir . Performans / bellek tüketimi hakkında sorunuza İlişkin, bu tür şeylerin o lanet öğrenmeliyiz, etki alanı varlıkları üzerinde işlem Fonksiyonlarınızdan arayüzünü değiştirmeden dahili olarak nasıl depolandığını şeyler değişmeye izin verebilir, bir short
çok lanet adildir büyük.