Modyfikator Friend w Visual Basic określa, że członek klasy (metoda, właściwość, zmienna) jest dostępny wewnątrz jednego zestawu, ale niedostępny na zewnątrz zestawu. Jest to odpowiednik internal w C#. Taki poziom dostępu jest przydatny do zapewnienia "ukrycia" wewnętrznej implementacji kodu przy otwartości publicznych interfejsów API.
Przykład użycia:
' Wewnątrz jednego projektu/zestawu Friend Class InternalHelper Friend Sub Log(message As String) Console.WriteLine(message) End Sub End Class
Wywołanie metod klasy InternalHelper będzie możliwe tylko w ramach bieżącego zestawu.
Kiedy stosować Friend:
Czym różni się modyfikator dostępu Friend od Protected? Czy metoda zadeklarowana jako Friend może być widoczna w dziedziczącej klasie w innym zestawie?
Odpowiedź:
Protected Friend Sub MyMethod() ' Dostępny wewnątrz zestawu i dla dziedziczących na zewnątrz zestawu End Sub
Historia
W dużym projekcie cała logika klas pomocniczych została zadeklarowana jako Public, co otworzyło je dla zewnętrznych integratorów. Przejście na Friend wyeliminowało ryzyko użycia wewnętrznych metod na zewnątrz modułu i uprościło utrzymanie architektury.
Historia
Z powodu błędu dostępu (użyto Protected zamiast Friend), metody pomocnicze były niedostępne dla testów jednostkowych, umieszczonych w tym samym projekcie, ale poza hierarchią klas. Naprawiono na Friend, aby wspierać wygodne testowanie.
Historia
Pewien deweloper próbował użyć Friend do udostępnienia metod do wtyczki załadowanej z innego zestawu. W rezultacie wtyczki nie miały dostępu do potrzebnych metod. Rozwiązanie — implementacja interfejsów z metodami Public, Friend używać tylko dla wewnętrznych potrzeb.