cfile22.uf.tistory.com

Download Report

Transcript cfile22.uf.tistory.com

.NET Naming Rule
2009.10.07
.NET Naming Rule Guide Line
명명 규칙
개발 업무 시, 각 개발 요소에 대한 이름으로 명명 규칙을 준수함으로써 코드의 안정성과 가독성을 향상시키
고 명확한 의미 부여 및 생산성을 높일 수 있습니다.
1.
명명 규칙 준수를 통한 업무 생산성 효과
- 일종의 규약을 설정하여 프로젝트 개발자 간의 원활한 업무적 의사 소통 가능
- 업무 단계별 산출물 사이의 일관성 유지
- 명확한 의미 부여로 산출물 사이의 연관성 및 코드 가독성 향상
2.
명명 규칙 준수 시 공통 사항
- 임의(정의되지 않은)의 약어 대신 완벽한 단어를 사용한다. (약어 사용시, 정의된 약어 사용)
- 명칭의 가독성을 높이기 위해 대소문자를 원칙에 따라 혼용하여 사용한다.
- 업무 영역에 적합하고 연관된 용어를 선정 및 정의한다.
- 같은 유형의 요소에 대해서는 혼동을 방지하기 위해 유사 명칭이나, 대소문자만 다른 명칭은 사용 금지한다.
- 너무 긴 명칭을 삼가한다. (15자 이내 권장)
- .NET Framework 및 각 언어에서 미리 정의된 키워드 이름과 중복되지 않아야 한다.
.NET Naming Rule Guide Line
명명 규칙 표기법
유형
설명
예시
적용대상
Pascal Case
모든 단어의 첫 번째 글자를 대문자로 쓴다.
ProductCatalog
클래스
열거형(Enum), 열거값
이벤트
읽기 전용 정적 필드
인터페이스
메소드
네임스페이스, 속성 등
Camel Case
맨 첫 번째 글자는 소문자로, 나머지 각 단어의 첫 번째 글자를
대문자로 쓴다.
productCatalog
매개변수(parameter)
인스턴스 필드, 클래스 변수
Upper Case
모든 글자를 대문자로 쓴다.
System.IO
2글자 정도의 단어, 상수
Hungarian Case
Pascal Case 유형 앞에 변수의 타입 약어를 표시한다.
dtDocData
컨트롤 변수
데이터 관련 변수
.NET Naming Rule Guide Line
클래스(Class)
1.
클래스 명은 간단하면서도 설명이 되도록 명명한다.
2.
단수 명사(명사, 명사구)를 사용하는 것을 원칙으로 하며, 여러 개의 단어가 결합해야 할 경우는
명사 + 동사(MemberList)의 형태로 사용한다.
3.
정해진 약어를 제외하고는 완전한 단어를 사용하며, 표기법은 Pascal Case을 적용한다.
구분
명명 표준
예시
Base Class
[공통 기능 명] + Base
RuleBase, DacBase
Business Façade
[Use Case Group 명] + System/Façade/Service
ProductSystem, OderService
Business Rule
[Use Case Group 명]+ Biz
MemberBiz
Data Access Component
[Use Case Group 명] + Dac
[테이블 명] + Dac
MemberDac
Exception Class
[사용자 정의 예외 명] + Exception
BusinessRuleException
.NET Naming Rule Guide Line
베이스 클래스(Base Class)
1.
공통적으로 사용하는 부모 클래스를 의미하며, 어플리케이션 아키텍처에 의해 정의해 각 Role별로 그 공
통된 기능을 미리 정의한 클래스이다.
2.
각각의 Role에 해당하는 Class를 생성하여 사용하는 경우에는 반드시 해당하는 Base Class로부터 상속
받아서 사용하도록 한다.
3.
베이스 클래스는 각 Layer별로 필요한 Utility API를 포함하거나, 권한인증 및 Logging 등의 특별한 공통
기능을 수행한다.
구분
명명 표준
Web Service
WebServiceBase
Business Rule
[Use Case Group 명] + BizBase
Data Access Component
[Use Case Group 명] + DacBase
Transaction Option
트랜잭션 사용 시 “메소드 명 + _Tx”
(메소드 단위로 사용)
.NET Naming Rule Guide Line
인터페이스(Interface)
1.
클래스 명명 규칙과 동일하며, 대문자 I를 접두사로 사용하여 인터페이스인지 구분할 수 있도록
한다.
ex) IServiceProvider, Icomponent
메서드
1.
동사 / 동사구(동사 + 명사)를 사용하며 표기법은 Pascal Case를 적용하고, 파라미터는 일반적으
로 Camel 표기법을 사용하며 이름과 타입으로 의미를 확인할 수 있을 정도로 설명적이여야 한다.
ex) GetUsers(), RegisterUser(string userId)
2.
Business Rule, Data Access 계층의 클래스 메서드는 사전에 약속된 동사를 사용한다.
구분
Business Façade / Rule
Data Access Componenet
추가
Add / AddNew / Append / Register + 명사
ex) AddNewMemberInfo
Insert
수정
Modify / Change / Update + 명사
ex) UpdateMemberInfo
Update
삭제
Remove / Delete + 명사
ex) DeleteMemberInfo
Delete
조회
Get / Inquire + 명사 /
Inquire + 명사 + By + 조건(Optional)
ex) GetMemberInfo, GetMemberInfoByMemberID
Select / Inquire /
결과값이 Scalar 값이나 Boolean인 경우는 서비스 의미를 나
타내는 단어를 이용하여 명명표준을 따른다.
ex) MaxNumber(), IsExist(string userId)
.NET Naming Rule Guide Line
변수(Variant) 및 필드(Field)
1.
변수 이름은 짧으면서도 의미가 있는 단어를 사용한다.
2.
기본적으로 Camel Case를 사용한다.
ex) empName, result, name
3.
4.
5.
데이터 관련 변수(오른쪽 표 참고)와 UI 컨트롤의 경우(부록 참고)는
타입을 나타내는 접두어를 붙여 표기한다.
(Hungarian Case 표기법)
ex) dtResult, drSelectedRow, ibtnSearch(Image Button), btnSelect
매개 변수, 지역 변수, 인스턴스 필드는 Camel Case를 사용하고, 정적
필드는 Pascal Case를 적용한다.
멤버 변수도 일반 변수와 마찬가지로 Camel Case 표기법을 사용하나,
일반 메소드 내부 변수와 구분을 하기 위해 this 를 사용한다.
ex)
private string memberName;
public void SomeMethod(string memberName)
{
this.memberName = memberName
}
개체 유형
접두어
DataSet
ds
DataRow
dr
DataColumn
dc
DataTable
dt
DataView
dv
TableCell
tc
데이터 관련 변수 접두어
.NET Naming Rule Guide Line
상수(Constants)
1.
표기법은 Upper Case를 사용하며, 단어와 단어 사이는 _로 연결한다.
ex) int MAX_COUNT = 1000;
속성(Property)
1.
Pascal Case 표기법을 사용한다.
2.
내부 type(private)과 동일한 이름을 사용한다.
3.
Private 인스턴스 필드를 외부에 노출 시, Pascal Case 표기법을 사용한다.
ex)
// 내부 type인 경우, Camel Case 적용
private int itemCount;
// Private 인스턴스 필드를 외부에 노출하고자 하는 경우, Pascal Case 적용
public int ItemCount
{
get { … }
set { … }
}
.NET Naming Rule Guide Line
이벤트(Event)
1.
표기법은 Pascal Case를 적용하며, 이벤트 처리ㄹ기 이름에는 EventHandler 접미사를 사용한다.
ex) MouseEventHandler
2.
이벤트 인수 클래스 이름에는 EventArgs 접미사를 사용한다.
ex) MouseEventArgs
public delegate void MouseEventHandler(object sender, MouseEventArgs e);
3.
시점을 나타내는 경우, BeforeXXX / AfterXXX 대신 ~ing / ~(e)d 형태를 사용한다.
ex) BeforeClose, AfterClose  Closing, Closed
.NET Naming Rule Guide Line
네임스페이스(Namespace)
1.
Pascal Case 를 적용한다. (기본 구조)
2.
회사명.도메인/부서.애플리케이션/시스템명.하위시스템.논리적계층
ex) Microsoft.Windows.WindowsServer.IIS
3.
업무 시스템에 맞게 ‘도메인/부서’, ‘하위 시스템’, ‘논리적 계층’ 등은 생략 가능하다.
ex) NEO.Development.MessengerApp
수준
내용
예제
생략 가능 여부
1
회사명
Neoplus
(약어 표시일 경우 Upper Case 표기법 : NEO)
X
2
도메인 / 부서
Development
O
3
애플리케이션 / 시스템명
MessengerApp
X
4
하위 시스템
InstantChatting
O
5
논리적 계층
Biz
O
.NET Naming Rule Guide Line
네임스페이스(Namespace)
1.
Server Component Layer는 서브 시스템 아래 Layer 별로 네임스페이스 명을 지정한다.
ex) NEO.Development.MessengerApp.Web
Layer
Namespace
Biz Layer
Biz
Dac Layer
Dac
Web UI
Web
Web User Control
WebCtl
Web Service
WS
Windows Form
Win
Windows Console
Con
Windows Service
WinSvc
.NET Naming Rule Guide Line
부록
1.
웹폼 컨트롤에 따른 접두어(1)
컨트롤 유형
접두어
예제
컨트롤 유형
접두어
예제
Adrotator
rot
rotMenu
MainMenu
mnu
mnuOption
Button
btn
btnOK
MonthCalendar
cal
calThisMonth
ComboBox
cbo
cboCountry
PictureBox
pic
picPhoto
CheckBox
chk
chkSubject
Panel
pnl
pnlCategory
CheckBoxList
chkl
chklJuso
ProgressBar
prg
prgStatus
CompareValidator
vcomp
vompCom
RichTextBox
rtf
rtfNotepad
CustomValidator
vcst
vcstCheck
RadioButton
rad
radEducation
CrystalReportViewer
crv
crvReport
RadioButtonList
rbtnl
rbtnlHobby
DataGrid
dgr
dgrCustomer
Repeater
rep
repBook
DropDownList
ddl
ddlName
RequiredField
Validator
vreq
vreqCheck
DataList
dlst
dlstAdress
RangeValidator
vrng
vrngScop
DateTimePicker
dtp
dtFromDate
RegularExpression
Validator
vrex
vrexCheck
Dialogs
dlg
dlgFileOpen
StatusBar
stb
stbCurrent
Form
frm
frmPath
TextBox
txt
txtAddress
GroupBox
grp
grpBox
TreeView
tvw
tvwOrgan
HyperLink
hlnk
hlnkHome
TabControl
tab
tabBasicInfo
.NET Naming Rule Guide Line
부록
1.
웹폼 컨트롤에 따른 접두어(2)
컨트롤 유형
접두어
예제
컨트롤 유형
접두어
예제
ImageButton
ibtn
ibtnOK
Timer
tmr
tmrEvent
Image
img
imgBack
ToolBar
tlb
tlbMenu
ListBox
lst
lstAddress
ValidationSummary
vsumn
vsumnOK
Label
lbl
lblName
XML
xml
xmlData
LinkLabel
hlbl
hlblTitle
Listview
lvw
lvwService
.NET Naming Rule Guide Line
부록
2.
HTML 컨트롤에 따른 접두어
컨트롤 유형
접두어
예제
Button
hbtn
hbtnGo
CheckBox
hchk
hchkHobby
DropDown
hddl
hddlJuso
File Field
hfile
hfilePage
Image
himg
himgBack
Label
hlbl
hlblName
ListBox
hlst
hlstCity
ResetButton
htbtn
htbtnCancel
RadioButton
hrbtn
hrbtnJob
SubmitButton
hsbtn
hsbtnOK
TextField
htxt
htxtName
HiddenField
hhd
hhdName
Table
htab
htabItemList
TableRow
htabr
htabrTempRow
TableCell
htabc
htabcTempCell
Anchor
hac
hacRedirect
Span
hspn
hspnLable
Div
hdiv
hdivTable
.NET Naming Rule Guide Line
부록
3.
윈폼 컨트롤에 따른 접두어(1)
컨트롤 유형
접두어
예제
컨트롤 유형
접두어
예제
Button
btn
btnRegister
NumricUpDown
nud
nudPrice
CheckedListBox
clb
clbYN
NotifyIcon
nic
nicProduct
CheckBox
chk
chkYN
OpenFileDialog
ofd
ofdExcel
ComboBox
cbo
cboProduct
PictureBox
img
imgProduct
ContextMenu
cmn
cmnFile
Panel
pnl
pnlJob
ColorDialog
col
colBackColor
ProgressBar
prg
prgStatus
ComponentOne
FlexGrid
cdg
cdgCustomerInfo
RichTextBox
rtb
rtbThinkPad
DataGrid
dgr
dgrProduct
RadioButton
rad
radJob
DateTimePicker
dtp
dtpFromDate
SaveFileDialog
sfd
sfdFile
DomainUpDown
dud
dudProduct
StatusBar
stb
stbUserInfo
ErrorProvider
err
errDatabase
Splitter
spl
splMenu
FontDialog
fnt
fntMain
Timer
tmr
tmrAsync
GroupBox
grp
grpJob
TextBox
txt
txtUserId
Hor.Scrollbar
hsb
hsbLimit
TrackBar
trb
trbUser
HelpProvider
hlp
hlpMenual
ToolTip
tip
tipTimer
ImageList
iml
imlProduct
ToolBar
tbr
tbrMenu
.NET Naming Rule Guide Line
부록
3.
윈폼 컨트롤에 따른 접두어(2)
컨트롤 유형
접두어
예제
컨트롤 유형
접두어
예제
Label
lbl
lblName
TreeView
tvw
tvwMenu
ListView
lvw
lvwProduct
TabControl
tab
tabUserInfo
LinkLabel
llb
llbTitle
TabPage
tbp
tbpJob
ListBox
lst
lstProduct
Vert.Scrollbar
vsb
vsbLimit
Menu
mnu
mnuFile
MonthCalendar
cal
calExport
.NET Naming Rule Guide Line
부록
4. 샘플 예제 소스 (1)
using
using
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Configuration;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
Microsoft.SharePoint;
//#. 네임스페이스 : 회사명.시스템명.논리적계층 구조로 표기, Pascal Case 표기법
namespace Neoplus.MonitoringApp.Win
{
public partial class DocumentList : Form
{
//#. 상수 : Upper Case 표기법
private const string SITE_URL = ConfigurationManager.AppSettings.Get("SiteUrl") as string;
private const string LIST_NAME = ConfigurationManager.AppSettings.Get("ListName") as string;
public DocumentList()
{
InitializeComponent();
}
.NET Naming Rule Guide Line
부록
4. 샘플 예제 소스 (2)
private void btnRefresh_Click(object sender, EventArgs e)
{
this.dgvDocument.DataSource = GetDocList(LIST_NAME);
}
//#. 메소드명 : Pascal Case 표기법 & 매개변수 : Camel Case 표기법
private DataTable GetDocList(string listName)
{
//#. 데이터 관련 변수 및 UI 컨트롤 : Hungarian Case 표기법
DataTable dtDoc = new DataTable();
SPSecurity.RunWithElevatedPrivileges(delegate()
{
//#. 변수 : Camel Case 표기법
using (SPSite site = new SPSite(SITE_URL))
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists[listName];
dtDoc = list.Items.GetDataTable();
}
});
}
}
}
return dtDoc;