INFO: Visual Basic용 Microsoft Consulting Services 명명 규칙
기술 자료 ID | : | 110264 |
마지막 검토 | : | 2007년 12월 26일 수요일 |
수정 | : | 1.1 |
이 페이지에서
요약
Visual Basic 코드에 대한 명명 규칙을 만드는 것이 좋습니다. 이 문서에서는 Microsoft Consulting Services(MCS)에 사용되는 명명 규칙을 제공합니다.
이 문서에 나오는 규칙은 Visual Basic "Programmer's Guide"에 있는 Visual Basic 코드 규칙의 상위 집합입니다.
참고: 이 문서에 나와 있는 타사 컨트롤은 Microsoft와 무관한 공급업체에서 제조한 것입니다. Microsoft는 이러한 컨트롤의 성능이나 신뢰성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.
이 문서에 나오는 규칙은 Visual Basic "Programmer's Guide"에 있는 Visual Basic 코드 규칙의 상위 집합입니다.
참고: 이 문서에 나와 있는 타사 컨트롤은 Microsoft와 무관한 공급업체에서 제조한 것입니다. Microsoft는 이러한 컨트롤의 성능이나 신뢰성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.
추가 정보
명명 규칙은 Visual Basic 프로그래머가 다음과 같은 작업을 수행하는 데 도움이 됩니다.
Visual Basic에서 파일을 항상 ASCII 텍스트로 저장하려면 환경 옵션 대화 상자에서 기본 저장 형식 옵션을 텍스트로 설정합니다.
참고: 쿼리에 접미사를 사용하면 Microsoft Access 대화 상자(예: 테이블 추가, 테이블 목록 표시 스냅숏)에서 각 쿼리를 관련 테이블과 정렬시킬 수 있습니다.
이 규칙을 사용하면 특정 메뉴 그룹의 모든 구성원이 코드 창과 속성 창의 개체 드롭다운 목록 상자에서 서로 옆에 표시됩니다. 또한 메뉴 컨트롤 이름에 자신과 연결된 메뉴 항목이 명시됩니다.
고급 목록 상자와 같은 파생 컨트롤은 실제로 사용 중인 컨트롤이 혼동되지 않도록 위의 접두사를 확장합니다. 일반적으로 제조업체를 나타내는 소문자 약어가 접두사에 추가됩니다. 예를 들어, Visual Basic Professional 3D 프레임에서 만든 컨트롤 인스턴스는 fra3d 접두사를 사용하여 실제로 사용 중인 컨트롤을 명확하게 나타낼 수 있으며, MicroHelp의 명령 단추는 cmdm을 사용하여 자신과 표준 명령 단추(cmd)가 구별되도록 할 수 있습니다.
접두사:
다음 표에는 Windows C 헝가리어 표기법을 기반으로 하는 변수 및 함수 이름 접두사에 대한 정의가 나와 있습니다. 이러한 접두사는 모든 변수 및 함수 이름과 함께 사용되어야 합니다. %, &, #, etc. 등의 이전 Basic 접미사는 사용하지 않는 것이 좋습니다.
변수 및 함수 이름 접두사:
참고: 수렴된 형태 열에 있는 값은 Visual Basic, Visual Basic for Applications 및 Access Basic에 대한 명명 표준을 가급적 모두 충족하도록 되어 있습니다. 이러한 접두사는 곧 Microsoft 표준이 될 예정입니다.
범위 및 사용법 접두사:
헝가리어 표기법은 C에서뿐만 아니라 Visual Basic에서도 중요합니다. Visual Basic 형식 접미사는 변수의 데이터 형식은 나타내지만 변수 또는 함수의 용도나 액세스 방법은 나타내지 않습니다. 예를 들면 다음과 같습니다.
헝가리어 표기법은 Windows C 프로그래머에 의해 널리 사용되고 있으며, Microsoft 제품 설명서와 업계 프로그래밍 서적에서 지속적으로 참조되고 있습니다. 또한 Visual C++ 개발 시스템이 널리 사용되기 시작하면서 C 프로그래머와 Visual Basic 프로그래머 간의 관계는 더욱 견고해질 전망입니다. 따라서 처음에는 많은 Visual Basic 프로그래머가 C로 이동하지만 나중에는 두 환경 사이를 빈번하게 왕래하는 프로그래머가 많아질 것입니다.
자주 사용되거나 긴 용어의 경우 표준 약어를 사용하여 이름 길이를 적절하게 유지하는 것이 좋습니다. 일반적으로 32자 이상의 변수 이름은 VGA 디스플레이에서 읽기 어려울 수 있습니다.
약어를 사용할 때는 전체 응용 프로그램에서 일관성을 유지해야 합니다. 예를 들어, 한 프로젝트 내에서 Cnt와 Count 사이를 임의로 전환하면 불필요한 혼동을 일으킬 수 있습니다.
그러나 데이터베이스, 메시지, DDE 또는 OLE 관련 작업을 수행할 때는 Variant 데이터 형식이 매우 유용할 수 있습니다. 대부분의 데이터베이스에서는 NULL을 유효한 필드 값으로 허용하므로 코드에서 NULL, 0(영) 및 ""(빈 문자열)을 구분해야 합니다. 일반적으로 이러한 작업에는 수신하는 데이터의 형식을 몰라도 해당 데이터의 처리 또는 전달이 가능한 일반 서비스 루틴이 사용될 수 있습니다. 예를 들면 다음과 같습니다.
루틴에 전달되는 매개 변수에 대한 설명은 해당 함수가 분명하지 않고 매개 변수가 특정 범위에 위치해야 하는 경우에 필요합니다. 또한 각 루틴의 시작 부분에는 해당 루틴에 의해 변경되는(특히, 참조 함수를 통해 변경되는) 함수 반환 값과 전역 변수에 대한 설명이 나와 있어야 합니다.
루틴 헤더 주석 블록은 다음과 같아야 합니다(해당 예는 "코드 서식 지정" 절 참조).
모든 특수 변수 선언에는 선언되는 변수의 사용법을 설명하는 인라인 주석이 포함되어야 합니다.
변수, 컨트롤 및 루틴의 이름은 복잡하거나 비직관적인 구현 정보에만 인라인 주석이 필요하도록 명확하게 지정해야 합니다.
응용 프로그램, 열거형 주 데이터 개체, 루틴, 알고리즘, 대화 상자, 데이터베이스, 파일 시스템 등에 대한 개요는 프로젝트의 Visual Basic 일반 상수 선언이 포함된 .BAS 모듈의 시작 부분에 나와 있어야 합니다.
참고: 기본적으로 프로젝트 창에는 프로젝트에 있는 파일 목록이 표시되므로 이 개요 구역은 초기화(.INI) 또는 데이터베이스 파일과 같이 프로젝트 창에 표시되지 않는 파일이나 가장 중요한 파일과 모듈에 대한 정보를 제공할 때만 필요합니다.
표준, 탭 기반, 블록 중첩 들여쓰기에는 2~4개의 공백을 사용해야 합니다. 5개 이상의 공백은 불필요하며 이로 인해 문이 보이지 않거나 실수로 잘릴 수 있습니다. 2개 미만의 공백은 논리 중첩을 충분히 보여주지 않습니다. Microsoft 기술 자료 문서에는 3공백 들여쓰기가 사용됩니다. 환경 옵션 대화 상자를 사용하면 기본 탭 너비를 설정할 수 있습니다.
루틴의 기능을 설명하는 개요 주석에는 1공백 들여쓰기를 사용해야 합니다. 개요 주석 다음에 나오는 가장 높은 수준의 문은 한 탭을 들여써야 하고 이후의 각 중첩된 블록은 한 탭씩 추가로 들여써야 합니다. 예를 들면 다음과 같습니다.
Visual Basic 응용 프로그램에서 폼 간에 데이터를 공유하는 다른 편리한 방법이 없을 경우에만 전역 변수를 사용합니다. 경우에 따라 form.object.property 구문을 사용하여 전역적으로 액세스할 수 있는 컨트롤의 태그 속성에 정보를 저장할 수도 있습니다.
전역 변수를 사용해야 하는 경우 단일 모듈에 모든 변수를 선언하고 함수별로 그룹화하는 것이 좋습니다. 모듈 이름으로는 GLOBAL.BAS와 같이 해당 용도를 나타내는 의미 있는 이름을 사용하십시오.
전달하면 안 되는 전역 변수를 제외하고 프로시저와 함수는 자신들에게 전달되는 개체만 처리해야 합니다. 루틴에 사용되는 전역 변수에 대한 설명은 루틴의 시작 부분에 있는 일반 주석 영역에 있어야 합니다. 또한 전달된 인수의 값을 명시적으로 변경하지 않으려는 경우 ByVal을 사용하여 sub와 함수에 해당 인수를 전달합니다.
가능한 한 항상 모듈별 모드를 작성합니다. 예를 들어, 응용 프로그램에서 대화 상자를 표시하는 경우 대화 상자 작업을 수행하는 데 필요한 모든 컨트롤과 코드를 단일 폼에 배치합니다. 이렇게 하면 응용 프로그램 코드를 유용한 구성 요소로 구성하고 런타임 오버헤드를 최소화하는 데 도움이 됩니다.
다음 표에는 컨트롤 접두사와 함께 사용할 표준 타사 공급업체 이름 접두사가 나와 있습니다.
다음 표에는 표준 타사 컨트롤 접두사가 나와 있습니다.
Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹 (http://support.microsoft.com/newsgroups/default.aspx)에 참여하시기 바랍니다.
• | 응용 프로그램의 구조, 코딩 스타일 및 논리 표준화 |
• | 정확하고 읽을 수 있으며 모호하지 않은 소스 코드 작성 |
• | 다른 언어 규칙(특히, Visual Basic Programmers Guide 및 표준 Windows C 헝가리어 표기법)과의 일관성 유지 |
• | 효율적인 문자열 크기 및 작업 관리를 통해 보다 길고 완전한 개체 이름 작성 |
• | 위의 작업을 수행하는 데 필요한 최소 요구 사항 정의 |
환경 옵션 설정
Option Explicit를 사용합니다. 입력 오류(예: aUserNameTmp, sUserNameTmp, sUserNameTemp)를 줄여 프로그래밍 시간을 절약할 수 있도록 모든 변수를 선언합니다. 환경 옵션 대화 상자에서 변수 선언 요구를 예로 설정합니다. Option Explicit 문을 사용하려면 Visual Basic 프로그램에 있는 모든 변수를 선언해야 합니다. 파일을 ASCII 텍스트로 저장합니다. 폼(.FRM) 및 모듈(.BAS) 파일을 ASCII 텍스트로 저장하여 버전 제어 시스템의 사용을 용이하게 하고 디스크 손상으로 인해 발생할 수 있는 피해를 최소화합니다. 또한 다음을 수행할 수 있습니다.• | 사용자 고유의 편집기 사용 |
• | grep와 같은 자동화된 도구 사용 |
• | Visual Basic용 코드 생성 또는 CASE 도구 만들기 |
• | Visual Basic 코드의 외부 분석 수행 |
표준 개체에 대한 개체 명명 규칙
다음 표에는 MCS 표준 개체 이름 접두사에 대한 정의가 나와 있습니다. 이러한 접두사는 Visual Basic Programmer's Guide에서 설명하는 접두사와 동일합니다.접두사 | 개체 유형 | 예 |
---|---|---|
ani | 애니메이션 단추 | aniMailBox |
bed | 펜 Bedit | bedFirstName |
cbo | 콤보 상자 및 드롭다운 목록 상자 | cboEnglish |
chk | 확인란 | chkReadOnly |
clp | 그림 클립 | clpToolbar |
cmd(3d) | 명령 단추(3D) | cmdOk(cmd3dOk) |
com | 통신 | comFax |
ctr | 컨트롤(해당 유형을 알 수 없는 경우) | ctrCurrent |
dat | Data 컨트롤 | datBiblio |
dir | 디렉터리 목록 상자 | dirSource |
dlg | Common dialog 컨트롤 | dlgFileOpen |
drv | 드라이브 목록 상자 | drvTarget |
fil | 파일 목록 상자 | filSource |
frm | 폼 | frmEntry |
fra(3d) | 프레임(3d) | fraStyle(fra3dStyle) |
gau | 계기 | gauStatus |
gpb | 그룹 누름 단추 | gpbChannel |
gra | 그래프 | graRevenue |
grd | 표 | grdPrices |
hed | 펜 Hedit | hedSignature |
hsb | 수평 스크롤 막대 | hsbVolume |
img | 이미지 | imgIcon |
ink | 펜 잉크 | inkMap |
key | 키보드 키 상태 | keyCaps |
lbl | 레이블 | lblHelpMessage |
lin | 선 | linVertical |
lst | 목록 상자 | lstPolicyCodes |
mdi | MDI 자식 폼 | mdiNote |
mpm | MAPI 메시지 | mpmSentMessage |
mps | MAPI 세션 | mpsSession |
mci | MCI | mciVideo |
mnu | 메뉴 | mnuFileOpen |
opt(3d) | 옵션 단추(3d) | optRed(opt3dRed) |
ole | OLE 컨트롤 | oleWorksheet |
out | Outline 컨트롤 | outOrgChart |
pic | 그림 | picVGA |
pnl3d | 3d 패널 | pnl3d |
rpt | Report 컨트롤 | rptQtr1Earnings |
shp | Shape 컨트롤 | shpCircle |
spn | Spin 컨트롤 | spnPages |
txt | 입력란 | txtLastName |
tmr | 타이머 | tmrAlarm |
vsb | 수직 스크롤 막대 | vsbRate |
데이터베이스 개체에 대한 개체 명명 규칙
접두사 | 개체 유형 | 예 |
---|---|---|
db | ODBC 데이터베이스 | dbAccounts |
ds | ODBC Dynaset 개체 | dsSalesByRegion |
fdc | 필드 컬렉션 | fdcCustomer |
fd | 필드 개체 | fdAddress |
ix | 인덱스 개체 | ixAge |
ixc | 인덱스 컬렉션 | ixcNewAge |
qd | QueryDef 개체 | qdSalesByRegion |
qry(suffix) | 쿼리(참고 참조) | SalesByRegionQry |
ss | 스냅숏 개체 | ssForecast |
tb | 테이블 개체 | tbCustomer |
td | TableDef 개체 | tdCustomers |
메뉴 명명 규칙
응용 프로그램은 종종 여러 개의 메뉴 컨트롤을 사용합니다. 따라서 이러한 컨트롤마다 각기 다른 명명 규칙 집합이 필요합니다. 메뉴 컨트롤 접두사는 mnu 레이블로 시작되고 각 중첩 수준에 부가 접두사가 추가되며 이름 문자열의 끝에는 최종 메뉴 캡션을 붙여서 확장됩니다. 예를 들면 다음과 같습니다.메뉴 캡션 시퀀스 | 메뉴 처리기 이름 |
---|---|
Help.Contents | mnuHelpContents |
File.Open | mnuFileOpen |
Format.Character | mnuFormatCharacter |
File.Send.Fax | mnuFileSendFax |
File.Send.Email | mnuFileSendEmail |
기타 컨트롤에 대한 명명 규칙
위에 나열되지 않은 새로운 컨트롤에는 3자의 고유한 접두사를 사용하는 것이 좋지만 분명하지 않을 경우 3자 이상의 접두사를 사용할 수 있습니다.고급 목록 상자와 같은 파생 컨트롤은 실제로 사용 중인 컨트롤이 혼동되지 않도록 위의 접두사를 확장합니다. 일반적으로 제조업체를 나타내는 소문자 약어가 접두사에 추가됩니다. 예를 들어, Visual Basic Professional 3D 프레임에서 만든 컨트롤 인스턴스는 fra3d 접두사를 사용하여 실제로 사용 중인 컨트롤을 명확하게 나타낼 수 있으며, MicroHelp의 명령 단추는 cmdm을 사용하여 자신과 표준 명령 단추(cmd)가 구별되도록 할 수 있습니다.
타사 컨트롤
응용 프로그램에서 사용하는 각 타사 컨트롤은 다음과 같이 컨트롤에 사용된 접두사, 컨트롤의 전체 이름 및 소프트웨어 공급업체의 이름과 함께 응용 프로그램의 개요 주석 구역에 표시되어야 합니다.접두사 | 컨트롤 유형 | 공급업체 |
---|---|---|
cmdm | 명령 단추 | MicroHelp |
변수 및 루틴 명명 규칙
변수 및 함수 이름은 <접두사><본문><수식어><접미사>와 같은 구조로 되어 있습니다.부분 | 설명 | 예 |
---|---|---|
<접두사> | 변수의 사용법과 범위를 나타냅니다. | iGetRecordNext |
<본문> | 변수를 나타냅니다. | iGetNameFirst |
<수식어> | 변수의 파생물을 나타냅니다. | iGetNameLast |
<접미사> | 선택적 Visual Basic 형식 문자입니다. | iGetRecordNext% |
다음 표에는 Windows C 헝가리어 표기법을 기반으로 하는 변수 및 함수 이름 접두사에 대한 정의가 나와 있습니다. 이러한 접두사는 모든 변수 및 함수 이름과 함께 사용되어야 합니다. %, &, #, etc. 등의 이전 Basic 접미사는 사용하지 않는 것이 좋습니다.
변수 및 함수 이름 접두사:
접두사 | 수렴된 형태 | 변수 사용법 | 데이터 형식 | 접미사 |
---|---|---|---|---|
b | bln | 부울 | 정수 | % |
c | cur | 통화 - 64비트 | 통화 | @ |
d | dbl | Double - 64비트 | Double | # |
부호 있는 수량 | ||||
dt | dat | 날짜 및 시간 | Variant | |
e | err | 오류 | ||
f | sng | Float/Single - 32비트 | Single | ! |
부호 있는 | ||||
부동 소수점 | ||||
h | 핸들 | 정수 | % | |
i | 인덱스 | 정수 | % | |
l | lng | Long - 32비트 | Long | & |
부호 있는 수량 | ||||
n | int | 숫자/카운터 | 정수 | % |
s | str | 문자열 | 문자열 | $ |
u | Unsigned - 16비트 | Long | & | |
부호 없는 수량 | ||||
udt | 사용자 정의 형식 | |||
vnt | vnt | Variant | Variant | |
a | 배열 |
범위 및 사용법 접두사:
접두사 | 설명 |
---|---|
g | 전역 |
m | 모듈 또는 폼에 로컬 |
st | 정적 변수 |
(접두사 없음) | 프로시저에 로컬인 비정적 변수, 접두사 |
v | 값별로 전달되는 변수(루틴에 로컬) |
r | 참조별로 전달되는 변수(루틴에 로컬) |
iSend - 전송된 메시지 수를 나타냅니다.
bSend - 마지막 전송 작업의 성공을 나타내는 부울 플래그입니다.
hSend - Comm 인터페이스에 대한 핸들입니다.
이러한 각 변수 이름은 프로그래머에게 무언가 매우 다른 것을 알려줍니다. 이 정보는 변수 이름이 Send%로 줄어들면 손실됩니다. 또한 g와 m 같은 범위 접두사는 특히, 개발자가 여러 명 있는 환경에서 이름 경합 문제를 줄이는 데 도움이 됩니다.bSend - 마지막 전송 작업의 성공을 나타내는 부울 플래그입니다.
hSend - Comm 인터페이스에 대한 핸들입니다.
헝가리어 표기법은 Windows C 프로그래머에 의해 널리 사용되고 있으며, Microsoft 제품 설명서와 업계 프로그래밍 서적에서 지속적으로 참조되고 있습니다. 또한 Visual C++ 개발 시스템이 널리 사용되기 시작하면서 C 프로그래머와 Visual Basic 프로그래머 간의 관계는 더욱 견고해질 전망입니다. 따라서 처음에는 많은 Visual Basic 프로그래머가 C로 이동하지만 나중에는 두 환경 사이를 빈번하게 왕래하는 프로그래머가 많아질 것입니다.
변수 및 루틴 이름의 본문
변수 또는 루틴 이름의 본문은 대/소문자를 혼용해야 하며 그 용도를 설명할 수 있을 만큼 길어야 합니다. 또한 함수 이름은 InitNameArray 또는 CloseDialog와 같이 동사로 시작되어야 합니다.자주 사용되거나 긴 용어의 경우 표준 약어를 사용하여 이름 길이를 적절하게 유지하는 것이 좋습니다. 일반적으로 32자 이상의 변수 이름은 VGA 디스플레이에서 읽기 어려울 수 있습니다.
약어를 사용할 때는 전체 응용 프로그램에서 일관성을 유지해야 합니다. 예를 들어, 한 프로젝트 내에서 Cnt와 Count 사이를 임의로 전환하면 불필요한 혼동을 일으킬 수 있습니다.
변수 및 루틴 이름에 대한 수식어
관련 변수와 루틴은 종종 공통 개체를 관리하고 조작하는 데 사용됩니다. 이러한 경우 표준 수식어를 사용하여 파생 변수 및 루틴을 나타냅니다. sGetFirstName, sGetLastName 대신 sGetNameFirst, sGetNameLast를 사용하는 경우와 같이 이름 본문 뒤에 수식어를 붙이면 약간 어색하게 보이지만 Visual Basic 편집기 루틴 목록에서 이러한 이름을 정렬하는 데 도움이 됩니다. 따라서 응용 프로그램의 논리와 구조를 보다 쉽게 이해할 수 있습니다. 다음 표에는 일반 수식어 해당 표준 의미에 대한 정의가 나와 있습니다.수식어 | 설명(본문 뒤에 나옴) |
---|---|
First | 집합의 첫 번째 요소입니다. |
Last | 집합의 마지막 요소입니다. |
Next | 집합에 있는 다음 요소입니다. |
Prev | 집합에 있는 이전 요소입니다. |
Cur | 집합에 있는 현재 요소입니다. |
Min | 집합에 있는 최소값입니다. |
Max | 집합에 있는 최대값입니다. |
Save | 나중에 다시 설정해야 하는 또 다른 변수를 보관하는 데 사용됩니다. |
Tmp | 코드 내에서 해당 범위가 고도로 지역화된 |
"스크래치" 변수입니다. 일반적으로 Tmp 변수의 값은 단일 프로시저 내에 있는 | |
일련의 인접 문에서만 유효합니다. | |
Src | 원본입니다. 주로 루틴을 비교하고 전송하는 데 사용됩니다. |
Dst | 대상입니다. 주소 원본과 함께 사용됩니다. |
사용자 정의 형식
기호 이름 뒤에 추가된 _TYPE을 사용하여 사용자 정의 형식을 모두 대문자로 선언합니다. 예를 들면 다음과 같습니다.
Type CUSTOMER_TYPE
sName As String
sState As String * 2
lID as Long
End Type
사용자 정의 함수의 인스턴스 변수를 선언할 때는 변수 이름에 접두사를 추가하여 형식을 나타냅니다. 예를 들면 다음과 같습니다.
Dim custNew as CUSTOMER_TYPE
상수 명명 규칙
상수 이름의 본문은 단어 사이에 밑줄(_)이 있는 UPPER_CASE여야 합니다. 표준 Visual Basic 상수에는 헝가리어 정보가 포함되지 않지만 i, s, g 및 m과 같은 접두사는 상수의 값의 범위를 이해하는 데 매우 유용할 수 있습니다. 상수 이름은 변수와 동일한 규칙을 사용하여 지정합니다. 예를 들면 다음과 같습니다.
<mnUSER_LIST_MAX ' Max entry limit for User list (integer value,
' local to module)
gsNEW_LINE ' New Line character string (global to entire
' application)
Variant 데이터 형식
변수가 항상 특정 형식의 데이터를 저장한다는 것을 알고 있는 경우 해당 형식의 변수를 선언하면 Visual Basic에서 해당 데이터를 보다 효율적으로 처리할 수 있습니다.그러나 데이터베이스, 메시지, DDE 또는 OLE 관련 작업을 수행할 때는 Variant 데이터 형식이 매우 유용할 수 있습니다. 대부분의 데이터베이스에서는 NULL을 유효한 필드 값으로 허용하므로 코드에서 NULL, 0(영) 및 ""(빈 문자열)을 구분해야 합니다. 일반적으로 이러한 작업에는 수신하는 데이터의 형식을 몰라도 해당 데이터의 처리 또는 전달이 가능한 일반 서비스 루틴이 사용될 수 있습니다. 예를 들면 다음과 같습니다.
Sub ConvertNulls(rvntOrg As Variant, rvntSub As Variant)
' If rvntOrg = Null, replace the Null with rvntSub
If IsNull(rvntOrg) Then rvntOrg = rvntSub
End Sub
그러나 Variant를 사용할 경우 몇 가지 단점이 있습니다. Variant를 사용하는 코드 문은 종종 프로그래머가 명확하게 이해하기 어려울 수 있습니다. 예를 들면 다음과 같습니다.
vnt1 = "10.01" : vnt2 = 11 : vnt3 = "11" : vnt4 = "x4"
vntResult = vnt1 + vnt2 ' Does vntResult = 21.01 or 10.0111?
vntResult = vnt2 + vnt1 ' Does vntResult = 21.01 or 1110.01?
vntResult = vnt1 + vnt3 ' Does vntResult = 21.01 or 10.0111?
vntResult = vnt3 + vnt1 ' Does vntResult = 21.01 or 1110.01?
vntResult = vnt2 + vnt4 ' Does vntResult = 11x4 or ERROR?
vntResult = vnt3 + vnt4 ' Does vntResult = 11x4 or ERROR?
위의 예에서 Visual Basic 형식 변환 루틴을 사용했다면 훨씬 덜 모호하고, 읽고 디버깅하고 유지 관리하기가 훨씬 더 쉬웠을 겁니다. 예를 들면 다음과 같습니다.
iVar1 = 5 + val(sVar2) ' use this (explicit conversion)
vntVar1 = 5 + vntVar2 ' not this (implicit conversion)
코드 주석 달기
모든 프로시저와 함수는 루틴의 기능적 특성(역할)을 설명하는 간단한 주석으로 시작되어야 합니다. 여기에는 구현 정보(작동 원리)가 포함되면 안 됩니다. 이것은 일반적으로 구현 정보가 시간이 지나면서 변하므로 불필요한 주석 유지 관리 작업을 유발하거나 심지어 주석이 잘못될 수도 있기 때문입니다. 구현에 대한 설명은 코드 자체와 필요한 경우 인라인 또는 로컬 주석에 나옵니다.루틴에 전달되는 매개 변수에 대한 설명은 해당 함수가 분명하지 않고 매개 변수가 특정 범위에 위치해야 하는 경우에 필요합니다. 또한 각 루틴의 시작 부분에는 해당 루틴에 의해 변경되는(특히, 참조 함수를 통해 변경되는) 함수 반환 값과 전역 변수에 대한 설명이 나와 있어야 합니다.
루틴 헤더 주석 블록은 다음과 같아야 합니다(해당 예는 "코드 서식 지정" 절 참조).
구역 | 주석 설명 |
---|---|
Purpose | What the routine does (not how). |
Inputs | Each non-obvious parameter on a separate line with |
in-line comments | |
Assumes | List of each non-obvious external variable, control, open file, |
and so on. | |
Returns | Explanation of value returned for functions. |
Effects | List of each effected external variable, control, file, and |
so on and the affect it has (only if this is not obvious) |
변수, 컨트롤 및 루틴의 이름은 복잡하거나 비직관적인 구현 정보에만 인라인 주석이 필요하도록 명확하게 지정해야 합니다.
응용 프로그램, 열거형 주 데이터 개체, 루틴, 알고리즘, 대화 상자, 데이터베이스, 파일 시스템 등에 대한 개요는 프로젝트의 Visual Basic 일반 상수 선언이 포함된 .BAS 모듈의 시작 부분에 나와 있어야 합니다.
참고: 기본적으로 프로젝트 창에는 프로젝트에 있는 파일 목록이 표시되므로 이 개요 구역은 초기화(.INI) 또는 데이터베이스 파일과 같이 프로젝트 창에 표시되지 않는 파일이나 가장 중요한 파일과 모듈에 대한 정보를 제공할 때만 필요합니다.
코드 서식 지정
아직 많은 프로그래머가 VGA 디스플레이를 사용하므로 코드 서식에 논리 구조와 중첩이 반영되도록 하면서 화면 공간을 가능하면 많이 확보하는 것이 좋습니다.표준, 탭 기반, 블록 중첩 들여쓰기에는 2~4개의 공백을 사용해야 합니다. 5개 이상의 공백은 불필요하며 이로 인해 문이 보이지 않거나 실수로 잘릴 수 있습니다. 2개 미만의 공백은 논리 중첩을 충분히 보여주지 않습니다. Microsoft 기술 자료 문서에는 3공백 들여쓰기가 사용됩니다. 환경 옵션 대화 상자를 사용하면 기본 탭 너비를 설정할 수 있습니다.
루틴의 기능을 설명하는 개요 주석에는 1공백 들여쓰기를 사용해야 합니다. 개요 주석 다음에 나오는 가장 높은 수준의 문은 한 탭을 들여써야 하고 이후의 각 중첩된 블록은 한 탭씩 추가로 들여써야 합니다. 예를 들면 다음과 같습니다.
**************************************************************************
'Purpose: Locate first occurrence of a specified user in UserList array.
'Inputs: rasUserList(): the list of users to be searched
' rsTargetUser: the name of the user to search for
'Returns: the index of the first occurrence of the rsTargetUser
' in the rasUserList array. If target user not found, return -1.
'**************************************************************************
'VB3Line: Enter the following lines as one line
Function iFindUser (rasUserList() As String, rsTargetUser as String) _
As Integer
Dim i As Integer ' loop counter
Dim bFound As Integer ' target found flag
iFindUser = -1
i = 0
While i <= Ubound(rasUserList) and Not bFound
If rasUserList(i) = rsTargetUser Then
bFound = True
iFindUser = i
End If
Wend
End Function
변수와 비일반 상수는 격리된 영역이나 특수 파일로 나누는 대신 함수별로 그룹화해야 합니다. HOURGLASS와 같은 Visual Basic 일반 상수는 단일 모듈(VB_STD.BAS)로 그룹화하여 응용 프로그램 관련 선언과 별도로 보관해야 합니다.
연산자
문자열을 연결할 때는 항상 앰퍼샌드(&)를 사용하고 숫자 값을 사용하여 작업할 때는 더하기 기호(+)를 사용합니다. 두 개의 Variant에 대한 연산을 수행할 때 숫자가 아닌 값에 더하기 기호(+)를 사용하면 문제가 발생할 수 있습니다. 예를 들면 다음과 같습니다.
vntVar1 = "10.01"
vntVar2 = 11
vntResult = vntVar1 + vntVar2 ' vntResult = 21.01
vntResult = vntVar1 & vntVar2 ' vntResult = 10.0111
범위
변수는 가능하면 가장 작은 범위를 사용하여 정의해야 합니다. 전역 변수는 시스템을 매우 복잡하게 만들고 응용 프로그램의 논리를 이해하기 매우 어렵게 할 수 있습니다. 또한 전역 변수는 코드의 재사용과 유지 관리를 훨씬 더 어렵게 합니다. Visual Basic의 변수는 다음과 같은 범위를 가질 수 있습니다.범위 | 변수 선언 위치 | 표시 |
---|---|---|
프로시저 수준 | 이벤트 프로시저, sub 또는 | 변수가 선언된 |
함수 | 프로시저에 | |
표시됨 | ||
폼 수준 및 | 폼 또는 코드 | 폼 또는 코드 |
모듈 수준 | 모듈(.FRM, .BAS)에 있는 | 모듈에 있는 |
선언 구역 | 모든 프로시저에 | |
표시됨 | ||
전역 | 코드 모듈 | 항상 표시됨 |
(전역 키워드를 사용하는 | ||
.BAS)의 선언 구역 |
전역 변수를 사용해야 하는 경우 단일 모듈에 모든 변수를 선언하고 함수별로 그룹화하는 것이 좋습니다. 모듈 이름으로는 GLOBAL.BAS와 같이 해당 용도를 나타내는 의미 있는 이름을 사용하십시오.
전달하면 안 되는 전역 변수를 제외하고 프로시저와 함수는 자신들에게 전달되는 개체만 처리해야 합니다. 루틴에 사용되는 전역 변수에 대한 설명은 루틴의 시작 부분에 있는 일반 주석 영역에 있어야 합니다. 또한 전달된 인수의 값을 명시적으로 변경하지 않으려는 경우 ByVal을 사용하여 sub와 함수에 해당 인수를 전달합니다.
가능한 한 항상 모듈별 모드를 작성합니다. 예를 들어, 응용 프로그램에서 대화 상자를 표시하는 경우 대화 상자 작업을 수행하는 데 필요한 모든 컨트롤과 코드를 단일 폼에 배치합니다. 이렇게 하면 응용 프로그램 코드를 유용한 구성 요소로 구성하고 런타임 오버헤드를 최소화하는 데 도움이 됩니다.
타사 컨트롤
참고: 아래에 나와 있는 제품은 Microsoft와 무관한 공급업체에서 제조한 것입니다. Microsoft는 이러한 제품의 성능이나 신뢰성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.다음 표에는 컨트롤 접두사와 함께 사용할 표준 타사 공급업체 이름 접두사가 나와 있습니다.
공급업체 | 약어 |
---|---|
MicroHelp(VBTools) | m |
Pioneer Software | p |
Crescent Software | c |
Sheridan Software | s |
기타 | o |
컨트롤 | 컨트롤 | 약어 | 공급업체 | 예 | VBX 파일 | |
---|---|---|---|---|---|---|
유형 | 이름 | 이름 | ||||
경보 | Alarm | almm | MicroHelp | almmAlarm | MHTI200.VBX | |
애니메이션 | Animate | anim | MicroHelp | animAnimate | MHTI200.VBX | |
콜백 | Callback | calm | MicroHelp | calmCallback | MHAD200.VBX | |
콤보 상자 | DB_Combo | cbop | Pioneer | cbopComboBox | QEVBDBF.VBX | |
콤보 상자 | SSCombo | cbos | Sheridan | cbosComboBox | SS3D2.VBX | |
확인란 | DB_Check | chkp | Pioneer | chkpCheckBox | QEVBDBF.VBX | |
차트 | Chart | chtm | MicroHelp | chtmChart | MHGR200.VBX | |
시계 | Clock | clkm | MicroHelp | clkmClock | MHTI200.VBX | |
단추 | Command | cmdm | MicroHelp | cmdmCommandButton | MHEN200.VBX | |
Button | ||||||
단추 | DB_Command | cmdp | Pioneer | cmdpCommandButton | QEVBDBF.VBX | |
단추(그룹) | Command | cmgm | MicroHelp | cmgmBtton | MHGR200.VBX | |
Button | ||||||
(multiple) | ||||||
단추 | Command | cmim | MicroHelp | cmimCommandButton | MHEN200.VBX | |
Button | ||||||
(아이콘) | ||||||
CardDeck | CardDeck | crdm | MicroHelp | crdmCard | MHGR200.VBX | |
주사위 | Dice | dicm | MicroHelp | dicmDice | MHGR200.VBX | |
목록 상자(드라이브) | SSDir | dirs | Sheridan | dirsDirList | SS3D2.VBX | |
목록 상자(드라이브) | SSDrive | drvs | Sheridan | drvsDriveList | SS3D2.VBX | |
목록 상자(파일) | File | List | film | MicroHelp | filmFileList | MHEN200.VBX |
목록 상자(파일) | SSFile | fils | Sheridan | filsFileList | SS3D2.VBX | |
대칭 이동 | Flip | flpm | MicroHelp | flpmButton | MHEN200.VBX | |
스크롤 막대 | Form Scroll | fsrm | MicroHelp | fsrmFormScroll | ??? | |
계기 | Gauge | gagm | MicroHelp | gagmGauge | MHGR200.VBX | |
그래프 | Graph | gpho | Other | gphoGraph | XYGRAPH.VBX | |
표 | Q_Grid | grdp | Pioneer | grdpGrid | QEVBDBF.VBX | |
스크롤 막대 | Horizontal | hsbm | MicroHelp | hsbmScroll | MHEN200.VBX | |
Scroll Bar | ||||||
스크롤 막대 | DB_HScroll | hsbp | Pioneer | hsbpScroll | QEVBDBF.VBX | |
그래프 | Histo | hstm | MicroHelp | hstmHistograph | MHGR200.VBX | |
숨김 | Invisible | invm | MicroHelp | invmInvisible | MHGR200.VBX | |
목록 상자 | Icon Tag | itgm | MicroHelp | itgmListBox | MHAD200.VBX | |
키 상태 | Key State | kstm | MicroHelp | kstmKeyState | MHTI200.VBX | |
레이블 | Label(3d) | lblm | MicroHelp | lblmLabel | MHEN200.VBX | |
선 | Line | linm | MicroHelp | linmLine | MHGR200.VBX | |
목록 상자 | DB_List | lstp | Pioneer | lstpListBox | QEVBDBF.VBX | |
목록 상자 | SSList | lsts | Sheridan | lstsListBox | SS3D2.VBX | |
MDI 자식 | MDI Control | mdcm | MicroHelp | mdcmMDIChild | ??? | |
메뉴 | SSMenu | mnus | Sheridan | mnusMenu | SS3D3.VBX | |
음영 | Marque | mrqm | MicroHelp | mrqmMarque | MHTI200.VB | |
그림 | OddPic | odpm | MicroHelp | odpmPicture | MHGR200.VBX | |
그림 | Picture | picm | MicroHelp | picmPicture | MHGR200.VBX | |
그림 | DB_Picture | picp | Pioneer | picpPicture | QEVBDBF.VBX | |
속성 뷰어 | Property | pvrm | MicroHelp | pvrmPropertyViewer | MHPR200.VBX | |
Viewer | ||||||
옵션(그룹) | DB_RadioGroup radp Pioneer | radqRadioGroup | QEVBDBF.VBX | |||
슬라이더 | Slider | sldm | MicroHelp | sldmSlider | MHGR200.VBX | |
단추(스핀) | Spinner | spnm | MicroHelp | spnmSpinner | MHEN200.VBX | |
스프레드시트 | Spreadsheet sprm | MicroHelp | sprmSpreadsheet | MHAD200.VBX | ||
그림 | Stretcher | strm | MicroHelp | strmStretcher | MHAD200.VBX | |
화면 보호기 | Screen Saver svrm MicroHelp | svrmSaver | MHTI200.VBX | |||
전환기 | Switcher | swtm | MicroHelp | swtmSwitcher | ??? | |
목록 상자 | Tag | tagm | MicroHelp | tagmListBox | MHEN200.VBX | |
타이머 | Timer | tmrm | MicroHelp | tmrmTimer | MHTI200.VBX | |
도구 모음 | ToolBar | tolm | MicroHelp | tolmToolBar | MHAD200.VBX | |
목록 상자 | Tree | trem | MicroHelp | tremTree | MHEN200.VBX | |
입력 상자 | Input(Text) txtm MicroHelp | inpmText | MHEN200.VBX | |||
입력 상자 | DB_Text | txtp | Pioneer | txtpText | QEVBDBF.VBX | |
스크롤 막대 | Vertical | vsbm | MicroHelp vsbmScroll | MHEN200.VBX | ||
Scroll Bar | ||||||
스크롤 막대 | DB_VScroll | vsbp | Pioneer | vsbpScroll | QEVBDBF.VBX |
Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹 (http://support.microsoft.com/newsgroups/default.aspx)에 참여하시기 바랍니다.
본 문서의 정보는 다음의 제품에 적용됩니다.
• | Microsoft Visual Basic 4.0 Standard Edition |
• | Microsoft Visual Basic 4.0 Professional Edition |
• | Microsoft Visual Basic 4.0 16-bit Enterprise Edition |
• | Microsoft Visual Basic 4.0 32-Bit Enterprise Edition |
• | Microsoft Visual Basic 2.0 Standard Edition |
• | Microsoft Visual Basic 3.0 Professional Edition |
• | Microsoft Visual Basic 2.0 Professional Edition |
키워드: |
kbinfo kbtophit kbref kbprogramming kbdocs kb3rdparty KB110264 |
출처 : http://support.microsoft.com/kb/q110264/
이 글은 스프링노트에서 작성되었습니다.
'Document' 카테고리의 다른 글
[매뉴얼] Intergraph SPLM Client라이센스 설정법 - SmartPlant Instrument(SPI, INTools) 기준 (0) | 2012.06.27 |
---|---|
대한민국의 전화번호 체계 (0) | 2011.05.16 |
델파이 코딩 가이드 (0) | 2008.07.16 |