. jak .NET

.NET & stuff blog by Maciej "Procent" Aniserowicz

Gra w chowanego z Intellisense

13 marca 2008 14:22 w kategorii: pro

W dobie tak potężnych narzędzi jak Visual Studio programiści często zdają się całkowicie na ich funkcjonalność. Jedną z (wspaniałych zresztą) cech współczesnych IDE jest Intellisense. Czy wyobraża ktoś sobie pisanie kodu bez podpowiedzi? Zobaczmy jednak, że nie zawsze można na tym elemencie polegać w 100% ze względu na "konfigurowalność" nawet tego mechanizmu VS.
Dla przykładu załóżmy dwie solucje (w C# nie wystarczą 2 osobne projekty w jednej solucji, w innych językach nie sprawdzałem): ClassLibrary1 oraz ConsoleApplication1. Dodajmy referencję CL1 do CA1. W CL1 stwórzmy klasę Class1 takiej postaci:

 1:   public class Class1
2: {
3: public void HideMe()
4: {
5: }
6: }

Gdy teraz w aplikacji konsolowej będziemy chcieli wykorzystać metodę HideMe - efekt jest znany:

Wystarczy jednak mała modyfikacja ze strony programisty udostępnianej biblioteki:

 1:   public class Class1
2: {
3: [System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
4: public void HideMe()
5: {
6: }
7: }

i mamy publiczną metodę niewidoczną w Intellisense!

Jeżeli zatem tworzymy jakiś komponent i pewne jego składowe muszą być publicznie dostępne, a jednocześnie nie chcemy aby lista Intellisense przyprawiła korzystającego z niego programistę o zawrót głowy - oto nasze rozwiązanie.
Ale uwaga - "use with care"; niebezpodstawne będzie chyba założenie, że wsród programistów można spodziewać się reakcji "jeżeli czegoś nie ma w Intellisense to to nie istnieje". Zupełnie jak w polityce - jeżeli nie ma strajków to znaczy że "żyje się lepiej. Wszystkim."


Komentarze

quetzalcoatl

24 czerwca 2008 13:55

przy okazji proponuje zapoznac sie z wycinkami informacji w temacie forum.4programmers.net/viewtopic.php

Dodaj komentarz


 

[b][/b] - [i][/i] - [u][/u] - [quote][/quote] - [code][/code]