.NET Naming Rule 2009.10.07

18
.NET Naming Rule 2009.10.07

description

.NET Naming Rule 2009.10.07. .NET Naming Rule Guide Line. 명명 규칙. 개발 업무 시 , 각 개발 요소에 대한 이름으로 명명 규칙을 준수함으로써 코드의 안정성과 가독성을 향상시키고 명확한 의미 부여 및 생산성을 높일 수 있습니다. 명명 규칙 준수를 통한 업무 생산성 효과 - 일종의 규약을 설정하여 프로젝트 개발자 간의 원활한 업무적 의사 소통 가능 - 업무 단계별 산출물 사이의 일관성 유지 - PowerPoint PPT Presentation

Transcript of .NET Naming Rule 2009.10.07

Page 1: .NET Naming Rule 2009.10.07

.NET Naming Rule

2009.10.07

Page 2: .NET Naming Rule 2009.10.07

.NET Naming Rule Guide Line

명명 규칙

개발 업무 시 , 각 개발 요소에 대한 이름으로 명명 규칙을 준수함으로써 코드의 안정성과 가독성을 향상시키고 명확한 의미 부여 및 생산성을 높일 수 있습니다 .

1. 명명 규칙 준수를 통한 업무 생산성 효과

- 일종의 규약을 설정하여 프로젝트 개발자 간의 원활한 업무적 의사 소통 가능

- 업무 단계별 산출물 사이의 일관성 유지

- 명확한 의미 부여로 산출물 사이의 연관성 및 코드 가독성 향상

2. 명명 규칙 준수 시 공통 사항

- 임의 ( 정의되지 않은 ) 의 약어 대신 완벽한 단어를 사용한다 . ( 약어 사용시 , 정의된 약어 사용 )

- 명칭의 가독성을 높이기 위해 대소문자를 원칙에 따라 혼용하여 사용한다 .

- 업무 영역에 적합하고 연관된 용어를 선정 및 정의한다 .

- 같은 유형의 요소에 대해서는 혼동을 방지하기 위해 유사 명칭이나 , 대소문자만 다른 명칭은 사용 금지한다 .

- 너무 긴 명칭을 삼가한다 . (15 자 이내 권장 )

- .NET Framework 및 각 언어에서 미리 정의된 키워드 이름과 중복되지 않아야 한다 .

Page 3: .NET Naming Rule 2009.10.07

.NET Naming Rule Guide Line

명명 규칙 표기법

유 형 설 명 예 시 적 용 대 상

Pascal Case 모든 단어의 첫 번째 글자를 대문자로 쓴다 . ProductCatalog

클래스열거형 (Enum), 열거값

이벤트읽기 전용 정적 필드

인터페이스메소드

네임스페이스 , 속성 등

Camel Case맨 첫 번째 글자는 소문자로 , 나머지 각 단어의 첫 번째 글자를

대문자로 쓴다 .productCatalog

매개변수 (parameter)인스턴스 필드 , 클래스 변수

Upper Case 모든 글자를 대문자로 쓴다 . System.IO 2 글자 정도의 단어 , 상수

Hungarian Case Pascal Case 유형 앞에 변수의 타입 약어를 표시한다 . dtDocData컨트롤 변수

데이터 관련 변수

Page 4: .NET Naming Rule 2009.10.07

.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

[ 테이블 명 ] + DacMemberDac

Exception Class [ 사용자 정의 예외 명 ] + Exception BusinessRuleException

Page 5: .NET Naming Rule 2009.10.07

.NET Naming Rule Guide Line

베이스 클래스 (Base Class)

1. 공통적으로 사용하는 부모 클래스를 의미하며 , 어플리케이션 아키텍처에 의해 정의해 각 Role 별로 그 공통된 기능을 미리 정의한 클래스이다 .

2. 각각의 Role 에 해당하는 Class 를 생성하여 사용하는 경우에는 반드시 해당하는 Base Class 로부터 상속 받아서 사용하도록 한다 .

3. 베이스 클래스는 각 Layer 별로 필요한 Utility API 를 포함하거나 , 권한인증 및 Logging 등의 특별한 공통기능을 수행한다 .

구 분 명명 표준 Transaction Option

Web Service WebServiceBase

Business Rule [Use Case Group 명 ] + BizBase트랜잭션 사용 시 “메소드 명 + _Tx”

( 메소드 단위로 사용 )

Data Access Component [Use Case Group 명 ] + DacBase

Page 6: .NET Naming Rule 2009.10.07

.NET Naming Rule Guide Line

인터페이스 (Interface)

1. 클래스 명명 규칙과 동일하며 , 대문자 I 를 접두사로 사용하여 인터페이스인지 구분할 수 있도록 한다 .ex) IServiceProvider, Icomponent

메서드

구분 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)

1. 동사 / 동사구 ( 동사 + 명사 ) 를 사용하며 표기법은 Pascal Case 를 적용하고 , 파라미터는 일반적으로 Camel 표기법을 사용하며 이름과 타입으로 의미를 확인할 수 있을 정도로 설명적이여야 한다 .ex) GetUsers(), RegisterUser(string userId)

2. Business Rule, Data Access 계층의 클래스 메서드는 사전에 약속된 동사를 사용한다 .

Page 7: .NET Naming Rule 2009.10.07

개체 유형 접두어

DataSet ds

DataRow dr

DataColumn dc

DataTable dt

DataView dv

TableCell tc

.NET Naming Rule Guide Line

변수 (Variant) 및 필드 (Field)

1. 변수 이름은 짧으면서도 의미가 있는 단어를 사용한다 .

2. 기본적으로 Camel Case 를 사용한다 .ex) empName, result, name

3. 데이터 관련 변수 ( 오른쪽 표 참고 ) 와 UI 컨트롤의 경우 ( 부록 참고 ) 는 타입을 나타내는 접두어를 붙여 표기한다 . (Hungarian Case 표기법 )ex) dtResult, drSelectedRow, ibtnSearch(Image Button), btnSelect

4. 매개 변수 , 지역 변수 , 인스턴스 필드는 Camel Case 를 사용하고 , 정적 필드는 Pascal Case 를 적용한다 .

5. 멤버 변수도 일반 변수와 마찬가지로 Camel Case 표기법을 사용하나 , 일반 메소드 내부 변수와 구분을 하기 위해 this 를 사용한다 .ex) private string memberName;public void SomeMethod(string memberName){

this.memberName = memberName}

데이터 관련 변수 접두어

Page 8: .NET Naming Rule 2009.10.07

.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 { … } }

Page 9: .NET Naming Rule 2009.10.07

.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

Page 10: .NET Naming Rule 2009.10.07

.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

Page 11: .NET Naming Rule 2009.10.07

.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

Page 12: .NET Naming Rule 2009.10.07

.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

CrystalRe-portViewer crv crvReport RadioButtonList rbtnl rbtnlHobby

DataGrid dgr dgrCustomer Repeater rep repBook

DropDownList ddl ddlNameRequiredField Val-

idator vreq vreqCheck

DataList dlst dlstAdress RangeValidator vrng vrngScop

DateTimePicker dtp dtFromDateRegularExpres-

sionValidator

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

Page 13: .NET Naming Rule 2009.10.07

.NET Naming Rule Guide Line

부록

1. 웹폼 컨트롤에 따른 접두어 (2)

컨트롤 유형 접두어 예제 컨트롤 유형 접두어 예제

ImageButton ibtn ibtnOK Timer tmr tmrEvent

Image img imgBack ToolBar tlb tlbMenu

ListBox lst lstAddressValidationSum-

mary vsumn vsumnOK

Label lbl lblName XML xml xmlData

LinkLabel hlbl hlblTitle

Listview lvw lvwService

Page 14: .NET Naming Rule 2009.10.07

.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

Page 15: .NET Naming Rule 2009.10.07

.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

ComponentOneFlexGrid 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

Page 16: .NET Naming Rule 2009.10.07

.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

Page 17: .NET Naming Rule 2009.10.07

.NET Naming Rule Guide Line

부록

4. 샘플 예제 소스 (1)

using System;using System.Collections.Generic;using System.ComponentModel;using System.Configuration;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using 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(); }

Page 18: .NET Naming Rule 2009.10.07

.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; } }}