Doğru veri türünü seçme
Değer türleri ile başvuru türleri arasındaki ve tam sayı ile kayan nokta türleri arasındaki farkı öğrendiniz.
İşinizin farklı veri türlerini alan, işleyen ve depolayan yeni bir uygulama derleyeceğini varsayalım. Hangi veri türlerini kullanıyorsunuz?
Bazı durumlarda, kolay bir seçimdir. Örneğin, metinle çalışmanız gerektiğinde, önemli miktarda birleştirme gerçekleştirmeniz gerekmediği sürece veri türünü varsayılan olarak kullanırsınız string
.
Peki sayısal verilerle çalışırken ne olacak? 11 farklı seçenek vardır. Doğru veri türünü nasıl seçersiniz?
Doğru veri türünü seçme
Seçebileceğiniz çok sayıda veri türü varken, belirli bir duruma uygun veri türünü seçmek için hangi ölçütleri kullanmanız gerekir?
Seçeneklerinizi değerlendirirken birkaç önemli noktaya dikkat etmeniz gerekir. Genellikle tek bir doğru yanıt yoktur ancak bazı yanıtlar diğerlerinden daha doğrudur.
Uygulamanızın sınır değeri aralığı gereksinimlerini karşılayan veri türünü seçin
Veri türü seçiminiz, belirli bir değişkende depolayabileceğiniz verilerin boyutu için sınırları belirlemenize yardımcı olabilir. Örneğin, belirli bir değişkenin yalnızca 1 ile 10.000 arasında bir sayıyı depolaması gerektiğini biliyorsanız, aksi takdirde beklenenin sınırlarının dışındadır, muhtemelen kaçınabilirsiniz byte
ve sbyte
aralıkları çok düşük olduğundan.
Ayrıca, gerektiğinden daha fazla veri depolayabildiğinden, büyük olasılıkla , long
, uint
ve ulong
gerekmeyebilirint
. Benzer şekilde, kesirli değerler gerekmediyse büyük olasılıkla float
, double
ve decimal
seçeneklerini de atlarsınız. ve olarak short
ushort
daraltabilirsiniz; her ikisi de uygulanabilir olabilir. Negatif bir değerin uygulamanızda bir anlamı olmadığından eminseniz(pozitif işaretsiz tamsayı, 0 - 65.535) seçebilirsiniz ushort
. Şimdi, 0 ila 65535 sınırının dışında ushort
türü değişkenine atanan her değer bir özel durum oluşturur, böylece uygulamanızı denetlerken bir miktar sağlamlığı zorunlu kılmanıza yardımcı olur.
Verilere sığacak veri türünü seçerek başlayın (performansı iyileştirmek için değil)
Uygulamanızın performansını artırdığını düşünerek verileri depolamak için en az biti kullanan veri türünü seçmek isteyebilirsiniz. Ancak, uygulama performansıyla (yani, uygulamanızın ne kadar hızlı çalıştığıyla) ilgili en iyi öneri uygulamayı "erkenden iyileştirmemektir". Uygulamanızın performansını etkileyebilecek veri türlerinin seçimi de dahil olmak üzere kodunuzun bölümlerini tahmin etme cazibesine karşı koymalısınız.
Çoğunlukla, belirli bir veri türünün daha az bilgi depoladığı için daha fazla bilgi depolayan bir veri türüne göre daha az bilgisayar işlemcisi ve bellek kullanması gerektiği varsayılır. Bunun yerine, verilerinize uygun türü seçmeniz, sonra da performansı olumsuz yönde etkileyen uygulama kısımlarıyla ilgili bilgiye dayalı içgörüler sağlayan özel yazılımlar kullanarak uygulamanızın performansını deneysel olarak ölçmeniz gerekir.
Kullanılan kitaplık işlevlerinin giriş ve çıkış veri türlerine göre veri türlerini seçme
İki tarih arasındaki bir yıl aralığı ile çalışmak istediğinizi varsayalım. Uygulama bir iş uygulaması olduğundan yalnızca 1960 ile 2200 arasında bir aralığa ihtiyacınız olduğunu belirleyebilirsiniz. 0 ile 255 arasındaki sayıları temsil ettiğinden birlikte byte
çalışmayı düşünebilirsiniz.
Ancak, System.TimeSpan
ve System.DateTime
sınıflarındaki yerleşik yöntemlere baktığınızda genellikle double
ve int
türündeki değerleri kabul ettiğinizi fark edersiniz. sbyte
türünü seçerseniz sbyte
ile double
veya int
arasında sürekli geçiş yapacaksınız. Bu durumda, saniye altı duyarlığa ihtiyaç duymuyorsanız int
, saniye altı duyarlığa ihtiyacınız varsa double
türünü seçmeniz daha mantıklı olabilir.
Diğer sistemlere etkisine bağlı olarak veri türlerini seçme
Bazen, bilgilerin başka uygulamalar veya bir veritabanı gibi başka sistemler tarafından nasıl kullanıldığını göz önünde bulundurmanız gerekir. Örneğin, SQL Server'ın tür sistemi C# dilinin tür sisteminden farklıdır. Sonuç olarak, verileri bir veritabanına kaydedebilmeniz için ikisi arasında bir eşleme yapılmalıdır.
Uygulamanızın amacı bir veritabanıyla arabirim oluşturmaksa, büyük olasılıkla verilerin nasıl depolandığını ve ne kadar veri depolandığını göz önünde bulundurmanız gerekir. Daha büyük bir veri türü seçimi, uygulamanızın oluşturacağı tüm verileri depolamak için gereken fiziksel depolamanın miktarını (ve maliyetini) etkileyebilir.
Şüpheye düştüğünüzde temel bilgilere bağlı kalın
Başlarken dikkat edilmesi gereken bazı noktalara göz atmışken basitlik açısından aşağıdakiler dahil olmak üzere temel veri türlerinin bir alt kümesini tercih etmelisiniz:
- Çoğu tam sayı için
int
- Parayı temsil eden sayılar için
decimal
- True veya false değerleri için
bool
- Alfasayısal değer için
string
Özel durumlar için özel karmaşık türler seçin
Belirli bir amaç için zaten bir veya daha fazla veri türü varsa veri türlerini yeniden oluşturmayın. Aşağıdaki örnekler belirli bir .NET veri türlerinin nerede yararlı olabileceğini belirler:
byte
: diğer bilgisayar sistemlerinden gelen kodlanmış verilerle veya farklı karakter kümeleri kullanarak çalışma.double
: geometrik veya bilimsel amaçlarla çalışma.double
sıklıkla hareketli oyunlar derlerken kullanılır.- Belirli bir tarih ve saat değeri için
System.DateTime
. - Yıl / ay / gün / saat / dakika / saniye / milisaniye aralığı için
System.TimeSpan
.
Özet
Kodunuz için veri türlerini ve genellikle birden fazla seçeneği seçerken dikkat edilmesi gereken noktalar vardır. Seçimlerinizi düşünün ve iyi bir nedeniniz yoksa , , decimal
string
ve bool
gibi int
temel türlerle devam etmeye çalışın.