Visual Basic'te modül (Module), projedeki tüm değişkenleri ve prosedürleri (doğru erişim belirleyicileri ile) beyan etmenizi sağlar. Modül içinde prosedürlerin dışında beyan edilen değişkenler, onun alanları haline gelir; görünürlük alanı belirleyiciye (Private/Friend/Public) bağlıdır ve ömürleri uygulamanın çalışma süresi boyunca sürer.
Modül değişkenlerinin ana özellikleri:
Küresel değişkenlerden (örneğin diğer dillerde veya eski VB6'da) farklı olarak, modül değişkenleri açıkça Public olarak beyan edilmediği sürece derlemin dışına erişilemez.
Örnek:
Module Globals Public Counter As Integer Sub Increment() Counter += 1 End Sub End Module ' Projenin her yerinden Counter'a erişim
Soru: Private belirleyicisi ile beyan edilen modül değişkenine hangi erişim olacaktır? Diğer modüllerden erişilebilir mi?
Cevap: Hayır, Private belirleyicisi ile beyan edilen değişken yalnızca bu modül içinde erişilebilir – diğer modüller veya sınıflar tarafından erişilemez.
Module Data Private x As Integer End Module ' Module Other x'i göremez
Hikaye
Hesaplama servisinin geliştirilmesi sırasında ara sonuçların tümü modül değişkenlerinde saklandı. Geliştiricilerden biri, verilerin çağrılar arasında "sıfırlanacağını" varsayıyordu, ancak durum (Application Scope) saklandı. Bu, hizmetin çok kullanıcılı olarak paralel kullanımı sırasında hatalara neden oldu. Çözüm: Yerel değişkenler kullanmak ve modüllerde durum saklamaktan kaçınmak, eğer iş parçacığı güvenliği gerekiyorsa.
Hikaye
Çok dosyalı bir projede, modül değişkeni
PublicyerineFriendbelirleyicisi ile beyan edildi. Bunun, çözümdeki tüm ilişkili projelerden erişilebilir olacağı bekleniyordu, ancak yalnızca bir derleme içinde görünür olduğu ortaya çıktı, bu da entegrasyon aşamasında beklenmeyen erişim hatalarına yol açtı.
Hikaye
Kod optimizasyonu sonrası süreçteki mantıksal bayraklar çalışmamaya başladı, çünkü sınıfın yapıcı fonksiyonuna, statik log bayrağının tanımlandığı modül geçmedi. Sonuç olarak, eski değer kullanıldı, bu da sistemin eski verilerle çalışmasına neden oldu ve modül değişkeninin durum değişikliği izlenmesi zorluğundan dolayı hata uzun süre araştırıldı.