ProgramlamaOrta/Kıdemli Visual Basic Geliştirici

Option Strict On ve Off arasındaki fark nedir, Strict'in etkinleştirilmesi hangi hataların önlenmesini sağlar ve katı modda doğru kod nasıl yazılmalıdır?

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

Cevap.

Soru Tarihi
Option Strict, Visual Basic .NET'te tür güvenliğini artırmak amacıyla ortaya çıktı. Dilin önceki sürümlerinde (VB6) türlerin örtük dönüşümleri gerçekleşiyor, bu da programın beklenmedik davranışlar sergilemesine ve zor tespit edilen hatalara yol açıyordu. Etkinleştirilmiş Strict, davranışı daha belirgin ve katı tipli hale getirmektedir.

Sorun
Örtük tür dönüşümleri (örneğin, bir metni sayısal bir değişkene atamak veya bir işlevden farklı türler döndürmek), çalışma zamanında hatalara neden olur. Option Strict Off olan projeler genellikle zor tespit edilen hata kaynaklarıdır.

Çözüm
Option Strict On iken örtük tür dönüşümlerine izin verilmez; tüm değişken bildirimleri, parametreler ve işlevlerin dönüş türleri açıkça belirtilmelidir. Bu, derleme aşamasında bir hata türünü önler ve kodun yüksek kalitesini sağlar.

Kod örneği:

Option Strict On Dim x As Integer x = "123" ' Derleme hatası - açık dönüşüm zorunludur x = CInt("123") ' Tamam Function GetNumber(ByVal input As String) As Integer Return input ' Derleme hatası End Function

Anahtar özellikler:

  • Açık tür dönüşümünü gerektirir.
  • Örtük genişletme dönüşümlerini yasaklar.
  • Her değişken ve dönüş değeri için tür beyanını zorunlu kılar.

Yanlış Soru.

Eğer Strict On kullanmak daha kolay ve güvenliyse, o zaman Option Strict Off neden gerekiyor?

Option Strict Off, içerisinde birçok örtük dönüşüm bulunan eski kodları desteklemek için kullanılır (örneğin, VB6'dan geçiş). Yeni projelerde daha güvenilir ve güvenli bir kod yazmak için Strict'in etkinleştirilmesi önerilir.

Varsayılan olarak Off olan bir projede, dosya seviyesinde tür seçim katılığını geri getirmek mümkün mü?

Evet, ayrı bir modül veya dosyanın başına Option Strict On direktifi ekleyerek, katı tür kontrolü sadece bu dosyaya uygulanır.

' Dosyanın başında: Option Strict On

Strict, Object üzerinden geç bağlama kullanmayı engelliyor mu?

Evet, Option Strict On iken derleme zamanında tanımlanamayan nesnelerin üyeleri çağrılmaz (geç bağlama). Nesneler, bilinen bir tür aracılığıyla arayüzlere dönüştürülmeli veya yalnızca Off ile dinamik çalışma yapılmalıdır.

Tipik hatalar ve anti-paternlere

  • Tür güvenliği ile çalışmaktan hoşlanmadığı için yalnızca Option Strict Off kullanmak.
  • Çalışma zamanında istisnalara yol açan örtük tür dönüşümleri.
  • Dönüşümün mümkün olup olmadığını kontrol etmeden yoğun casting işlemleri, örneğin, CInt, CDbl vb. kullanmadan. TryParse olmadan.

Hayattan bir örnek

Olumsuz vaka

Programcı Option Strict'i etkinleştirmedi ve TextBox'tan veri girişi sırasında değerler doğrudan sayısal değişkenlere atandı. Hatalı veriler girildiğinde program çöküyordu.

Artılar:

  • Hızlı başlangıç.
  • Geliştirme aşamasında daha az kod.

Eksiler:

  • İşletme aşamasında çok sayıda hata.
  • Beklenmedik hataların nedenini bulmak zor.

Olumlu vaka

Programcı Option Strict On'u etkinleştirdi, tüm dönüşümler açıkça TryParse aracılığıyla yapıldı. Hatalar derleme aşamasında yakalandı, çalışma zamanında istisnalar minimum düzeye indirildi.

Artılar:

  • Güvenilirlik, okunabilirlik, kodun tahmin edilebilirliği.
  • Hatalar hızla tespit edilir.

Eksiler:

  • Kod hacmi biraz artar.
  • Tür dönüşümleriyle çalışmak için iyi beceriler gereklidir.