Visual Basic 컨트롤 이름 규칙
프로그램이 복잡해지면 컨트롤을 사용함에 있어 가장 먼저 부딪히는 문제가 컨트롤 이름만으로는 그 컨트롤이 어떤 종류의 컨트롤인지 알 수 없게된다는 것이다. 물론 처음 비주얼 베이직이 정해준대로 Text1, Text2, ... 따위를 그대로 쓴다면 최소한 컨트롤의 종류를 몰라서 고민할 필요는 없을테지만 이것은 오히려 더 심각한 문제를 낳는다. 얼마나 심각한지를 알기 위해 굳이 몸소 체험하라고는 하지 않겠다.
보통 컨트롤 이름은 필요에 의해 컨트롤이 갖게 되는 의미에 해당하는 이름을 붙여 준다. 예를 들어 고객 이름을 저장하기 위한 텍스트박스 컨트롤이라면 그 이름을 처음 주어진 Text1에서 CustomerName 등으로 바꾸게 되는 것이다. 이런 식으로 이름을 정해 나가다 보면 나중에는 CustomerName이 텍스트 박스 컨트롤인지 아니면 리스트 박스 컨트롤인지 언듯 파악이 되지 않는다는 것이다. 폼 상에서는 눈에 보이기 때문에 파악이 되겠지만, 긴 프로그램 문장 중에서는 쉽게 파악이 안 된다. 단순한 문제같지만 나중에는 작업 효율을 떨어뜨리고 머리를 복잡하게 만드는 주 원인이 된다.
이런 종류의 문제는 비주얼 베이직 이전에도 많이 제기되어 왔다. 때문에 이전의 프로그래머들은 나름대로 이 문제에 대한 해결책을 제시해 왔다. 그중 하나가 헝가리안 표기법이다. 헝가리안 표기법은 변수명 등의 앞에 접두어로 그 변수명의 종류를 작게 표기하는 방식 중 하나이다.
비주얼 베이직에도 헝가리안 표기법을 무난히 적용시킬 수 있다. 비주얼 베이직 메뉴얼에는 아예 이 표기법을 상세히 기술하여 권장하려는 의도를 보인다. 당연한 얘기지만, 이 표기법이 마음에 들지 않는다면 다른 대안을 찾아도 상관 없다. 변수명, 컨트롤명을 정하는 것은 어디까지나 프로그래머 마음이지 누가 정한 표기법을 따라야 한다는 강제성은 없다. 단지 이런 식으로 변수명, 컨트롤을 표기하면 한눈에 파악이 되기 때문에 권장하는 것일 뿐이다. 또한 대다수의 사람들이 이런 표기법을 따르고 있기 때문에 여러 사람이 함께 프로그램을 할 시에 다른 사람의 소스를 파악하는 데에 많은 도움이 될 것이다.
컨트롤의 명명 규칙은 단순하다. 각 컨트롤을 생성할 때에 그 컨트롤에 맞추어진 예약 접두어를 앞에 붙여 주면 되는 것이다. 예를 들어 고객의 이름을 나타내는 텍스트 박스의 경우, 텍스트 박스의 접두어가 'txt-'이기 때문에 'txtCustomerName'이 되는 것이다.
보통 이 접두사는 소문자로, 3자 전후의 길이를 갖는다. 아래 컨트롤의 명명시 접두어가 되는 단어를 정리해 넣었다.
변수명명법
변수명 | 접두어 | 사용예 |
---|---|---|
Byte | byt | bytTmp |
Char | chr | chrTmp |
Inteher | n | nIndex |
Long | l | lSize |
Short | s | sColor |
Single | sng | sngAvr |
Double | dub | dubAvr |
Decimal | dec | decTmp |
String | str | strName |
Boolean | b | bEnd |
Object | obj | objControl |
Date | dtm | dtmDay |
컨트롤명명법
변수 | 접두어 | 사용예 |
---|---|---|
Button | btn | btnOK |
CheckBox | chk | chkinput |
CheckedLostBox | chklbx | chklbxinput |
ColorDialog | clrdlg | clrdlgSystem |
ComboBox | cmb | cmbDrive |
ContextMenu | ctxmnu | ctxmnuOpen |
DataGrid | datgrd | datgraGrade |
DateTimePicker | dtmpck | dtmpckTmp |
ErrorProvider | errprv | errprvTMp |
FontDialog | fntdlg | fntdlgSystem |
GroupBox | grb | grbType |
HelpProvider | hlpprv | hlpprvSystem |
HScrollBar | hscl | chclimage |
ilageList | imglst | imglstBlock |
Label | lbl | lblName |
LinkLabel | lnklbl | lnklblAddress |
ListBox | lbx | lbxDrive |
ListView | lst | lstFolder |
MainMenu | mnu | mnuFile |
MonthCalendar | mth | mthDay |
Notifylcon | nud | nudLevel |
OpenFileDialog | opndlg | opndlgFolder |
PageSetupDialog | pgedlg | pgedlgImage |
Panel | pan | panLeft |
PictureBox | pic | picGodori |
PrintDialog | pntdlg | pntdlgSystem |
PrintDocument | pntprv | pntprvdlgImage |
ProgressBar | pro | preprocess |
RadioButton | rdo | rdoServer |
RichTextBox | rtf | rtfinput |
SaveFileDialog | svedlg | svedlgSystem |
Splitter | spl | splCenter |
StatusBar | sts | stsUser |
TabControl | tab | tabApp |
TextBox | txt | txtName |
Timer | tim | timChat |
ToolBar | tlb | tlbOpen |
ToolTip | tip | tipPath |
TrackBar | trc | trcTmp |
TreeView | tree | treeFolder |
VSCrollBar | vscl | vsclSystem |
원하는이름 | 컨트롤종류 | 명명법에의한이름 |
---|---|---|
Test | 폼 | frmTest |
Tel | 텍스트박스 | txtTel |
Hello | 레이블 | lblHello |
Exit | 커맨드버튼 | cmdExit |
Mountain | 픽쳐박스 | picMountain |
이상한_컨트롤 | 종류불명 | ctr이상한_컨트롤 |
이외에도 별도로 추가된 ActiveX 컨트롤에 대해서는 해당 컨트롤의 도큐멘트를 참조하거나 아니면 임의로 사용자가 접두어를 정하면 된다. 만약 임으로 정했을 경우에는 따로 문서화를 시키거나, 아니면 프로젝트 파일 등에 표기해 놓아야 나중에 유지보수나 인수인계에 용이할 것이다.
'it > tech' 카테고리의 다른 글
프로그램에서 메일수신확인 방법 (0) | 2010.01.04 |
---|---|
Visual Basic 6.0 File Extention Name (0) | 2006.09.22 |
스크립트 오브젝트 테이블 (0) | 2006.09.22 |
IP 주소란? (0) | 2006.09.22 |
TCP/IP의 역사 (0) | 2006.09.22 |