VisualStudio에서 Code Snippets는 자작하면 더욱 기분

이 기사는 Silbird Advent Calendar 2017의 23 일째 기사입니다.

대상 독자


  • VisualStudio를 사용하여 개발하는 사람
  • VisualStudio에 익숙하지 않은 사람들
  • 좋아하는 자주 사용하는 코드 패턴이 있거나 비슷한 코드를 많이 사용하는 사람 1

  • 코드 스니펫이란?



    간소화된 기술과 조작으로 소스 코드를 삽입해 주는 기능입니다.
    이번에는 C# + VisualStudio로 전해드립니다.



    사용하면 어떻게됩니까?



    백문은 겉보기에 밖에 없고, sw라고 입력해 TAB를 2회 누르면 부드럽게 코드가 완성되어 갑니다.
    개인적으로 switch가 enum을 먹게 하면 Cool



    기본 스니펫



    C#에서는 기본이라도 편리한 스니펫이 갖추어져 있기 때문에, 신경이 쓰이는 분은 디폴트의 스니펫을 이용해 보면 이미지가 솟아난다고 생각합니다.

    Visual C# 코드 스니펫

    개인적으로 자주 사용하는 스니펫들.


    이름
    desc


    ctor
    생성자 만들기

    prop
    get, set가 준비된 프로퍼티를 작성

    switch
    switch 블록 만들기


    나만의 코드 스니펫 만들기



    xml에서 0부터 모두 만들 수도 있습니다2 하지만 이번에는 확장 기능인 Snippet Designer를 사용하여 작성합니다.

    스니펫 디자이너

    이용 장면 가정



    여기에서는 데이터 액세스를 실시하는 클래스를 대응하는 DB의 테이블마다 작성할 필요가 있다고 하는 시츄에이션3으로 진행해 갑니다.

    예를 들면 1개의 테이블마다 아래와 같이 클래스를 만들어 전 데이터 취득, 일의 검색, 갱신 처리를 구현해 나갈 필요가 있었다고 한다.
    
        public class UserDataAdapter
        {
            public UserDataAdapter() { }
    
            const string ConnectionString = "Data Source=XXXX";
    
            public Task<IEnumerable<people>> GetAllData()
            {
                using (var con = new SqlConnection(ConnectionString))
                {
                    return con.QueryAsync<people>("select * from people");
                }
            }
    
            public Task<people> GetByPK(int id)
            {
                using (var con = new SqlConnection(ConnectionString))
                {
                    return con.QueryFirstAsync<people>("select * from people");
                }
            }
    
            public Task<int> UpdateByPK(int id, string name)
            {
                using (var con = new SqlConnection(ConnectionString))
                {
                    return con.ExecuteAsync("update people set name = @name where id = @id", new { id, name });
                }
            }
        }
    

    매우 아니지만 하나 하나 장인의 수작업으로는 쓸 수 없다

    이번과 같이 대상이 정해져 있는 경우는 소스 코드를 선택해 오른쪽 클릭 「Export as Snippet」로부터 스니펫 파일을 작성합니다.



    스니펫 파일 편집


  • 사용시 동적으로 변경이 필요한 부분은 $変数名$로 묶어 사용시에 대체되도록 설정해 둔다
  • 사용할 바로 가기를 결정하고 입력

  • 이번에는 클래스명(ClassName)과 모델명(ModelName)이 동적으로 바뀌기 때문에 2점 치환 가능으로 설정합니다.



    실제로 사용해보기



    입력과 TAB을 누른 상태에서 클래스 이름과 모델 이름 바꾸기가 스니펫 전체에 적용된다는 것을 알 수 있습니다.
    (실제의 입력은 2개소만, 다른 것은 연동해 바뀝니다)

    스스로 쓰는 것보다 실수도 적고, 빠르고 즐겁습니다!





    코드 스니펫 게시 및 다운로드



    작성한 코드 스니펫은 널리 공개적으로 사용할 수 있습니다. 또, 나는 별로 이용하고 있지 않습니다만, 다른 쪽이 만든 코드 스니펫을 확장 기능으로서 받아들일 수도 있습니다. (도구 → 확장 프로그램 및 업데이트 → snippet으로 검색)

    코드 스니펫에 흥미가 나오면 여러가지 시험해 보면 쾌적한 VisualStudio Life를 보낼 수 있을지도 모릅니다.



    과거에 자주 사용했던 자작 스니펫



    갈라케용으로 웹 서비스를 개발하고 있던 시대에, 「docomo, au, softbank, 모든 커리어로 정상적으로 표시되는 table 태그 4 」를 써야 했습니다.

    잘 레일을 밟아 제대로 표시되지 않는 슬픔을 짊어지고 있었기 때문에 table 태그를 스니펫화해, 그것을 제일 사용하고 있던 기억이 있습니다



    원래 전제가 이상하다 

    코드 스니펫 스키마 참조 참조 

    그런 디자인 가에 닿지 않는다  

    영구 보존판! ? 휴대폰 코딩, 이만큼 읽으면 바로 할 수 있다! (템플릿 덤) 

    좋은 웹페이지 즐겨찾기