728x90

이 네이밍 규칙은 닷넷 스파이더 팀에서 만든 [C# Coding Standards and Best Programming Practices]를 바탕으로 만들었습니다.

혼자 작업할때는 상관없지만 팀작업을 해야 할 때는 필요한 자료입니다. ^^;

1. 네이밍 관례와 표준


  이 문서 전반에 걸쳐 파스칼표기법과 카멜 표기법이 사용된다.  

  파스칼 표기법 - 모든 단어에서 첫번째 문자가 대문자이며 나머지는 소문자이다.

    예: BackColor

  카멜 표기법 - 최초에 사용된 단어를 제외한 첫번째 문자가 대문자이며
                     나머지는 소문자이다.

    예: backColor


 

1. 클래스 명에는 파스칼 표기법을 사용한다.

public class HelloWorld
{

...

}


2. 함수(Method) 명에는 파스칼 표기법을 사용한다.


void SayHello(string name)
{

...

}



3. 변수와 함수 파라미터에는 카멜표기법을 사용한다.

int totalCount = 0;

void SayHello(string name)
{

string fullMessage = "Hello " + name;

...

}


4. 인터페이스에는 접두사 "I"가 포함된 파스칼표기법에 따른다. ( Example: IEntity )


5. 변수명에 헝가리안 표기법을 사용하지 않는다.

이전에는 많은 프로그래머들이 변수명에 데이타 타입에 해당하는 접두사를 첨가하겨 맴버변수에는 m_을 접두사로 사용하는 헝가리안 표기법을 사용했다. 예를 들어

string m_sName;

int nAge;


그러나 닷넷 코딩 표준에서 헝가리안 표기법은 추천하지 않는다. 데이타 타입을 사용하는 것과 멤버 변수를 표현하기 위한 m_ 은 사용해서는 안된다. 모든 변수는 카멜 표기법을 사용해야 한다.


몇몇 프로그래머들은 아직 m_를 붙이거나 데이타 타입을 표시하는 것을 더 좋아하겠지만, 이제 이것들은 멤버 변수를 확인하기위한 쉬운 방법이 아니다.


6. 변수에 모든 의미를 충분히 담아라. 약어를 사용하지 말것.


좋은 예:

string address

int salary


나쁜 예:

string nam

string addr

int sal


7. i, n, s 같이 한글자로 된 이름을 사용하지 말것. index, temp 같은 이름을 사용할 것.


한가지 예외가 있다면 루프에서 반복을 의미하는 변수를 하용하는 경우이다.


for ( int i = 0; i < count; i++ )

{

...

}


만일 변수가 단지 반복을 위한 카운터로만 사용된다면 그리고 그것이 루프안에 있는 다른 어떤 곳에서도 사용되지 않는다면, 많은 사람들은 아직까지 다른 적합한 단어는 만들어서 사용하는 것보다 i를 사용하는 것을 선호한다.


8. 지역변수에는 밑줄(_)을 사용하지 않느다.


9. 모든 멤버 변수들은 앞에 밑줄(_)을 사용해야 한다. 그래야 다른 지역변수들과 구분할 수 있다.


10. 키워드와 비슷한 이름을 하용하지 말것.


11. boolean 이 들어가는 변수, 속성, 함수(method)등은 "is" 또는 유사한 접두사를 사용한다.


예: private bool _isFinished


12. 네임스페이스 명은 표준 패턴을 따라야 한다.


<회사명>.<제품명>.<최상위모듈>.<하위모듈>


13. UI 구성요소를 위하여 적당한 접두사를 사용해야 한다. 그래서 다른 변수들과 구분할 수 있어야 한다.


여기 추천하는 서로 다른 두가지 방식이 있다.


a. 모든 UI 구성요소를 위하여 공통적인 접두사(ui_)를 사용하는 것이다. 이것은 모든 UI 구성요소를 묶는데 도움을 줄 것이고 쉽게 이해하고 접근하게 할 것이다.


b. 각각의 UI 구성요소마다 접두사를 적용하는 방법. 간단한 목록이 아래에 있다. 닷넷은 다양한 컨트롤들이 제공되므로 더 많은 컨트롤(써드파티 컨트롤을 포함한)에 대한 표준을 정의해야 한다.


 Control  prifix  Control  prifix
 Label  lbl  Checkbox  chk
 TextBox  txt  CheckBoxList  cbl
 DataGrid  dtg  RadioButton  rdo
 Button  btn  RadioButtonList  rbl
 ImageButton  imb  Image  img
 Hyperlink  hlk  Panel  pnl
 DropDownList  ddl  PlaceHolder  phd
 ListBox  lst  Table  tbl
 DataList  dtl  Validators  val
 Repeater  rep    
   

14. 파일명은 클래스 명과 같아야 한다.


예를 들어, 클래스 명이 "HelloWorld" 라면 파일명은 "HelloWorld.cs" 이어야 한다.


15.  파일명은 파스칼 표기법을 사용한다.




2. 들여쓰기


1. 들여쓰기에는 TAB 을 사용한다. SPACE를 사용하지 않는다. Tab 사이즈는 4로 정의한다.


2. 주선은 코드와 같은 레벨에 있어야 한다(들여쓰기의 레벨을 같이 사용한다.).


좋은 예:


// Format a message and display


string fullMessage = "Hello " + name;

DateTime currentTime = DateTime.Now;

string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();

MessageBox.Show ( message );


좋지 않은 예:


// Format a message and display

    string fullMessage = "Hello " + name;

    DateTime currentTime = DateTime.Now;

    string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();

    MessageBox.Show ( message );


3. 중괄호는 중괄호 밖에 있는 코드와 같은 레벨에 있어야 한다.

            
4. 논리적인 코드 그룹은 다른 코드와 한칸 띄어서 구분한다.


좋은 예:

        bool SayHello ( string name )

        {

               string fullMessage = "Hello " + name;

               DateTime currentTime = DateTime.Now;


               string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();


               MessageBox.Show ( message );


               if ( ... )

               {

                       // Do something

                       // ...


                       return false;

               }


               return true;

        }


안 좋은 예:


        bool SayHello (string name)

        {

               string fullMessage = "Hello " + name;

               DateTime currentTime = DateTime.Now;

               string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();

               MessageBox.Show ( message );

               if ( ... )

               {

                       // Do something

                       // ...

                       return false;

               }

               return true;

        }


5.     There should be one and only one single blank line between each method inside the class.


6. 중괄호는 다른 라인과 분리되어 있어야하며 라인을 같이 쓰면 안된다.


좋은 예:

               if ( ... )    

               {

                       // Do something

               }


안 좋은 예:


               if ( ... )     {

                       // Do something

               }


7. 지시자(operator)와 괄호 앞뒤로는 한 칸의 공간을 남긴다.


좋은 예:

               if ( showResult == true )

               {

                       for ( int i = 0; i < 10; i++ )

                       {

                              //

                       }

               }


나쁜 예:


               if(showResult==true)

               {

                       for(int    i= 0;i<10;i++)

                       {

                              //

                       }

               }



8. 연관된 코드를 묶을때는 #region을 사용해라. #region을 사용해서 묶는다면 그 페이지는 훨씬 간략해질 것이다.


9. private 멤버 변수, 속성, 그리고 메쏘드는 파일의 하단에 그리고 public 멤버들을 파일의 하단에 위치하도록 하라. 


 

728x90

SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();   
foreach(SHDocVw.InternetExplorer ie in shellWindows)
{
   filename = Path.GetFileNameWithoutExtension(ie.FullName).ToLower();
   if (filename.Equals("iexplore"))
  {
      // 밑의 두소스를 여기서 실행 시키면 됨.
   }
}

현재 활성화 된 인터넷 익스플로어의 정보를 얻어 냄. 얻어진 정보로 document
를 얻어내어 사용한다.
mshtml,SHDocVw는 별도의 참조 추가를 필요로 한다.
Microsoft HTML Object Library(mshtml.tlb),Microsoft Internet Controls(iframe.dll)
을 추가시켜준다.
mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)ie.Document;
mshtml.IHTMLElementCollection AllElements = doc.all;
foreach (mshtml.IHTMLDOMNode Element in AllElements)
{
    string ElementName = Element.nodeName;
    Console.WriteLine(ElementName);
}
IHTMLDocument2,IHTMLElementCollection 을 이용하여
모든 태그 이름 얻어 낼수 있다.
foreach (IHTMLElement HTMLElement in doc.all)
{
    if (HTMLElement.tagName == "A")
    {
        ListOfLinks.Add(HTMLElement);
    }
}

특정 태그 요소를 얻어 낼 수 있다.

원문 : http://toe10.tistory.com/admin/entry/edit/235

728x90
C# 과 C++과의 소켓통신을 구현하기 위해 자료를 찾다가, C#에서 윈속 사용하는 방법을 찾게 되었는데.. C#에서 윈속을 사용하기 위해서는 ActiveX 컨트롤을 추가 해주어야
하는 것을 보아 내가 사용하고자 하는 목적에는 잘 맞지는 않지만, 관련된 내용을 간단히 정리 해두려 한다.
C#에서 winsock을 사용하기 위해서는 winsock.dll 파일을 추가시켜주어야 한다.
이름은 Microsoft winsock Control version 6.0(sp6)로 되어 있는데 ,참조에서 이것을 추가 시켜주면 사용이 가능하다. 도구 상자에 기본으로 winsock 관련 컨트롤이 추가 되어 있지 않기 때문에, 도구상자에서 "우클릭->항목선택->COM 구성요소"에서  
Microsoft winsock Control version 6.0(sp6)로 되어있는 항목을 추가 시켜주면 사용이 가능하다.

자세한 winsock 사용 방법은 관련 사이트를 링크 시켜둔다.

http://www.phoenixbit.com/site/tutorials.asp?view=UHJvZ3JhbW1pbmcvQ3NoYXJwL1dpbnNvY2tDc2hhcnA
이곳에 들어 가면 C# winsock Tutorial 을 찾아 볼수 있을 것이다.

원문 : http://sixthman23.tistory.com/entry/C에서-winsock-사용하기

+ Recent posts