ProgramlamaVB.NET Geliştirici

Visual Basic'te sabitleri (Const, ReadOnly) nasıl doğru bir şekilde ilan etmek ve kullanmak gerekir, aralarındaki farklar nelerdir ve bunları kullanırken kaçınılması gereken tuzaklar nelerdir?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap.

Visual Basic, değiştirilemez değerleri ilan etmenin iki ana yolunu destekler - Const ve ReadOnly. Const, derleyici sabitleri için tasarlanmıştır, bu değerler derleme aşamasında bilinir. ReadOnly, yalnızca ilan sırasında veya yapıcıda başlatmaya izin verir ve çalışma sırasında değişmezliği destekler.

Tarihsel olarak, VB6 ve öncesinden bu tür bir anlam, sihirli sayılardan kaçınmayı ve bakımı kolaylaştırmayı sağlamıştır. VB.NET'te, okunan değerler için sınıf ve örnek alanları için ReadOnly getirerek olanaklar genişletilmiştir.

Problem

Runtime'da belirlenen veya dış verilere bağlı olan değerler için Const kullanılırsa hatalar oluşabilir. Karıştırılan görünürlük alanları da hatalara yol açar.

Çözüm

Derleme aşamasında bilinen (sayılar, dizeler) basit değişmez değerler için Const kullanın, ancak değerin yapıcıda hesaplanabileceği durumlar için yalnızca okunabilir olarak ReadOnly kullanın.

Kod örneği:

Public Class MathConstants Public Const Pi As Double = 3.1415926535 Public ReadOnly Property UtcCreated As DateTime Public Sub New() UtcCreated = DateTime.UtcNow End Sub End Class

Anahtar özellikler:

  • Const, derleme aşamasında bilinen değerler için (dizeler ve sayılar dahil) kullanılabilir
  • ReadOnly, yapıcıda başlatmaya izin verir, nesnenin yaşamı süresince değişmezliği sağlar
  • Const her zaman statiktir, ReadOnly ise örneklere göre değişebilir.

Kandırmaca Soruları

Runtime'da elde edilen bir değer için Const ilan edilebilir mi (örneğin, bir dosyadan)?

Hayır - Const, derleme aşamasında bir değer gerektirir. Runtime başlatması için ReadOnly kullanılmalıdır.

ReadOnly alanı yapıcıdan sonra değiştirilebilir mi?

Hayır - değişiklik yalnızca başlatma anında mümkündür (ya ilan ederken ya da yapıcıda), sonrasında yalnızca okumak için erişilebilir.

Matematiksel hesaplamalarda float/double sayılar için Const kullanılmalı mıdır?

Evet, eğer değer önceden biliniyorsa. Ancak diğer derlemelerde kullanıldığında, Const'ın değerini değiştirmek, tüm bağımlı modüllerin yeniden derlenmesini gerektirecektir, çünkü derleyici değeri doğrudan yerleştirir.

Yaygın Hatalar ve Anti-Desenler

  • Gerçekte sabit olmayan değerler için Const kullanımı
  • Yapıcıdan sonra ReadOnly ataması hatası - derleme hatalarına yol açar
  • Kodda Const/ReadOnly olmadan türetilmiş sihirli sayıları saklamak

Gerçek Hayattan Örnek

Olumsuz Örnek

Geliştirici, daha sonra farklı ortamlarda (geliştirme/prod) değiştirilecek bir klasör yolu için Const ilan etti. Sonuç olarak, klasör değiştiğinde, bu Const'ı kullanan tüm projelerin yeniden derlenmesi gerekiyordu.

Artılar:

  • Değişken için net tanım

Eksiler:

  • Değişiklik halinde tüm modüllerin yeniden derlenmesi gerekliliği
  • Esneklik eksikliği

Olumlu Örnek

Yollar için ReadOnly uygulandı, yapıcıda ortam yapılandırması dikkate alınarak başlatıldı. Değerler, tüm uygulamanın yeniden derlenmesi olmadan ayarlar aracılığıyla kolayca değiştirilebilir.

Artılar:

  • Esneklik
  • Bakım kolaylığı

Eksiler:

  • Kod yapısı daha karmaşık (yapıcı gerektirir)