Jak nazwać kontrolki GUI?


12

Używanie notacji węgierskiej jest ogólnie uważane za złą praktykę , ale często można znaleźć formanty GUI o nazwach userNameTextBoxi userNameLabel.

Czy podajesz typ kontrolki w nazwie? Czy to nie jest rodzaj węgierskiego zapisu?


w całej kopalni nie mają nazw, ponieważ nie potrzebują ich w WPF
jk.

Odpowiedzi:


12

Tak jak mówisz. Ogólnie notacja węgierska jest złą praktyką. Lubię trzymać moje nazwy tak blisko domeny, jak to możliwe, ale czasami próbujesz powiedzieć, że to jest pole tekstowe, a to etykieta .

Zobacz odpowiedź Kramiiego na inne pytanie, aby dowiedzieć się, dlaczego nadal używa języka węgierskiego w pewnych sytuacjach.

Podobnie jak w przypadku całego kodu, kluczem jest spójność i samoocena. Jeśli ty i twój zespół uzgadniacie, w jaki sposób różne kontrolki GUI są oznaczone i jakie elementy wymagają etykiet, wszystko będzie dobrze :)


8

Właściwie używam notacji węgierskiej, tylko do kontroli GUI. Używam czegoś takiego jak lblText, rbGroup1, lvTable itp. Do etykiet, przycisków opcji i widoków listy.

I tak nigdy się nie zmieniają i jasne jest, która zmienna jest formantem GUI, a co nie.

Ponieważ jednak używam WPF z możliwościami wiązania, tak naprawdę wcale nie jest konieczne nazywanie ich, ponieważ jest on powiązany z właściwością C #.

Przy okazji, nie popełnij błędu, nazywając kontrolkę lvListViewPersons, co czasami widzę. Jeśli zmienna jest poprzedzona lv, możesz zobaczyć, że jest to już widok listy.


3
Zgadzam się z tym. Sterowanie GUI to jedyne miejsce, w którym notacja węgierska nie jest grzechem głównym (oczywiście IMO)
Wayne Molina,

4

Nasz zespół używa notacji węgierskiej do kontroli GUI, a nie do reszty kodu.

Typowy przykład, etykieta, po której następuje pole tekstowe:

  • lblFirstName
  • txtFirstName

Ponadto ułatwia znalezienie pola tekstowego, wystarczy wpisać „txt”, a intellisense zrobi resztę.


1

Używam notacji węgierskiej dla elementów GUI. To naprawdę jest ból po zamknięciu QtDesigner, otwórz Visual Studio i kiedy chcesz ustawić tekst na przycisku, jeśli masz pole tekstowe nazwane username, passworditp Podczas korzystania z Qt, nie jest to duży problem, ponieważ wszystkie elementy GUI są owinięte wewnątrz uiobiektu ( ui.username), ale kiedy korzystam z formularzy Windows Forms, pole tekstowe o nazwie nazwa użytkownika powoduje jedynie powiększenie przestrzeni nazw.

W takim przypadku txtUsername, btnLogin, lblStatus, itd. Są wyraźnie lepsze opcje.


1

Unikam używania węgierskiej notacji dla kontrolek GUI - unikałbym nazwania formantu takiego jak `lblFirstName ', ponieważ tak naprawdę nie obchodzi mnie, że jest to etykieta - z punktu widzenia powiązania danych jest to po prostu coś do wiązania.

W przypadku formantów, które wymagają nazwy, zwykle dodam prefiks ux„user experience”. To wyjaśnia, że ​​przedmiot jest przeznaczony tylko dla użytkownika do interakcji. Na przykład mój model widoku może mieć właściwość o nazwie, FirstNamea widok może mieć kontrolę o nazwie uxFirstName. Ma to tę dodatkową zaletę, że wszystkie moje nazwane kontrolki są ładnie pogrupowane w moim IDE.


3
Czy uxsam prefiks nie jest notacją węgierską? Może inny rodzaj (nie pamiętam nazwisk dwóch), który wskazuje znaczenie, a nie typ, ale wciąż jest formą węgierską ;-)
Wayne Molina

Myślę, że masz na myśli apps hungarianprzeciwieństwo systems hungarian. Węgierskie aplikacje nie są uważane za tak szkodliwe jak systemy, ale myślę, że znaczenie ``ux '' może być zbyt wysokie, by nawet uznać je za aplikacje.
Wydaje

1

Wiem, że ludzie nie znoszą ogólnie węgierskiej notacji, ale nadal uważam ją za bardzo przydatną w wielu miejscach. W przypadku GUI używam przynajmniej prefiksu wnd.

Problem niestosowania węgierskiej notacji jest prosty: po opuszczeniu gładkich wód MSVS nawigacja nurkuje. Widzisz coś SomeValue = SomeOtherValuei nie masz pojęcia, co się dzieje, chyba że spojrzysz na każdą cholerną rzecz. Dzięki grep lub staremu staremu wyszukiwaniu, które zwykle zabija produktywność właśnie tam, IDE inne niż QT i MSVS są naprawdę kiepskie w wyszukiwaniu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.