57
Visual Studio 사용 설명서 - 고급 - Lusain Kim PRESENT BY WARP, 2016 1

Visual studio 사용 설명서(고급)

Embed Size (px)

Citation preview

Visual Studio 사용설명서

-고급 -

Lusain Kim

PRESENT BY WARP, 2016 1

목차• 글꼴 및 색

바로 가기

• 경로 설정바로 가기

• 경고 수준바로 가기

• 리펙터링 도구바로 가기

• 참조 프로젝트바로 가기

• 소스 제어바로 가기

INDEX

PRESENT BY WARP, 2016 2

글꼴및색

PRESENT BY WARP, 2016 3

폰트를아무거나쓰면안되는이유• 협업을 하는 두 개발자 A, B

• A 개발자는 '맑은 고딕', B 개발자는 'Arial' 폰트 사용 중

• A 가 코드를 보기 좋게 정렬해서 B 에게 전달

• B : ?????????

맑은 고딕 Arial

PRESENT BY WARP, 2016 4

고정길이글꼴을써야하는이유•고정 길이 글꼴

하나의 글자가 차지하는 폭이 동일한 폰트

• A 개발자와 B 개발자가 다른 폰트를 사용하더라도 동일한 간격 보장

• 코드 정렬 유지

•코딩용 폰트• 1, I, l, ㅣ,| (글꼴: 맑은 고딕)같은 구분하기 어려운 글자를 구분되게 만든 폰트

• D2Coding의 예 : 1, I, l, ㅣ,|

PRESENT BY WARP, 2016 5

추천하는코딩용폰트•제공 : 폰트 이름 순으로 기재

• Visual Studio : Consolas

• 네이버 개발자 센터(D2) : D2Coding, 나눔고딕코딩

• Windows : Courier New

• 참고 : http://ppss.kr/archives/66633

PRESENT BY WARP, 2016 6

색지정Visual Studio는 기본적으로 일정 단어에 색을 지정하여 가독성 지원◦ 초기 색 설정이 된 항목 :

◦ VS2010 : 키워드, 사용자 형식, 문자열, define, 주석 등

◦ 사용자 형식 : class, struct, union, enum 객체

◦ VS2013 : 매개인자

◦ VS2015 : new/delete 연산자

◦ 구분이 필요한, 약간 애매한 항목들도 구분하여 색 지정이 가능

◦ 변수 / 전역 변수 / 지역 변수 / 필드(클래스 멤버 변수) / 비정적 멤버 변수

◦ 함수 / 멤버 함수 / 비정적 멤버 함수 / 템플릿 함수

PRESENT BY WARP, 2016 7

어느게보기좋아요?

색 지정을 한 코드 색 지정을 하지 않은 코드

PRESENT BY WARP, 2016 8

어떻게바꿔요?도구 ▷ 옵션 ▷ 환경 ▷ 글꼴 및 색

PRESENT BY WARP, 2016 9

표시항목에서어떤걸바꿔야하나요?

PRESENT BY WARP, 2016 10

표시항목에서어떤걸바꿔야하나요?

PRESENT BY WARP, 2016 11

표시항목에서어떤걸바꿔야하나요?

PRESENT BY WARP, 2016 12

경로설정

PRESENT BY WARP, 2016 13

경로설정의필요성• 외부 라이브러리를 사용할 때

• 파일 개수가 50개를 넘어갈 때

• 리소스 파일이 있을 때

이렇게 파일 관리하면 안돼요!

PRESENT BY WARP, 2016 14

절대경로 vs 상대경로•절대 경로 파일의 탐색 경로가 파일 시스템의 루트로부터 시작해 명시된 파일의 경로 이름

출처 | 네이버 지식백과

•상대 경로현재 작업 디렉터리로부터 찾아갈 파일에 이르는 경로

출처 | 네이버 지식백과

• Visual Studio에서 작업중이라면, 상대 경로의 현재작업디렉터리는 현재 프로젝트 파일이 있는 곳

• 예 : Proj 프로젝트에서 작업하고 있을 경우, 상대 경로는 Proj 프로젝트 파일(Proj.vcxproj)이 있는 곳

• 협업을 한다면 되도록 상대경로로 맞출 것

• C:\Project\... 로 경로를 통일하고 싶지 않으면.

PRESENT BY WARP, 2016 15

소스파일을정리하니경로가꼬여요!• 파일이 많으면 용도별로 폴더를 나누는 것을 권장

• 폴더에 정리하면 이전처럼 파일에 바로 접근이 불가 (경로를 추가해야 함)

• Collision.h 파일을 참조하기 위해서는 Engine\Collision\Collision.h 을 전부 입력해야 함

• 프로젝트 중반에 소스 파일을 정리하면 대참사 (파일 소스을(를) 열 수 없습니다. …)

PRESENT BY WARP, 2016 16

소스파일을정리하니경로가꼬여요!• 경로를 명시하는 것도 좋지만, 미리 추가된 헤더 같은 경우 번거로울 수 있음

• 추가 디렉터리 경로를 설정하면 해당 디렉터리에서도 검색

• 모든 추가 디렉터리 경로에서 검색

• 예 : CollisionPath\Collision.h 를 Collision.h 로만 접근하고 싶을 때

• 추가 디렉터리 경로 ▷ CollisionPath

• 모든 작업 경로에서 #include "Collision.h" 로 접근 가능

PRESENT BY WARP, 2016 17

포함디렉터리설정하기• 설정 방법

1. [솔루션 탐색기] ▷ 프로젝트 우클릭 ▷ [속성] ▷ [구성 속성]

1. [모든 구성], [모든 플랫폼]으로 변경

2. [VC++ 디렉터리] ▷ [포함 디렉터리] ▷ [편집...]

3. [C/C++] ▷ [일반] ▷ [추가 포함 디렉터리] ▷ [편집...] …추천

∵ 프로젝트가 기본적으로 포함하는 경로를 건들지 않음.

PRESENT BY WARP, 2016 18

Tip.

1. [편집…]을 사용할 것 : 경로를 임의로 수정하다가 프로젝트를 다시 설정할 수 있음

2. <다른 옵션> 일 경우에는 절대로 [편집]을 사용할 것!

악몽의 시작

• 출력 디렉토리 실제 파일이 출력되는 디렉토리

• 구성과 플랫폼에 따른 산출물을 구분할 필요가 없다면 하나의 폴더에서 관리할 수 있음

• 적절히 잘 설정하여 프로젝트 폴더 관리를 수월하게 하는 것이 필요

PRESENT BY WARP, 2016 19

경고수준

PRESENT BY WARP, 2016 20

경고와오류의차이•오류Error 문법이 잘못되어 해석이 불가능한 경우

•경고Warning 문법이 조금 이상하거나 추후 문제의 소지가 있지만 해석은 가능한 경우

PRESENT BY WARP, 2016 21

경고의의미1. 컴파일은 되지만 컴파일러 임의로 해석할 여지가 있는 구문이 있음

2. 논리 오류(Logic Error)의 원인이 될 법한 구문이 있음

PRESENT BY WARP, 2016 22

경고수준Warning Level

◦ 경고는 레벨에 따라 엄격해짐

• Visual Studio의 기본 경고 수준은 W3

• 추가 정보 | https://msdn.microsoft.com/ko-kr/library/thxezb7y.aspx

W0 경고 없음

W1 심각한 경고 표시

W2 W1 + 조금 덜 심각한 경고 표시

W3 W2 + 프로덕션 목적으로 권장되는 기타 모든 경고 표시

W4 W3 + 정보를 알려주는 경고 표시 (권장)

PRESENT BY WARP, 2016 23

경고수준설정방법◦ 경고는 다음 위치에서 확인 가능:◦ 프로젝트 속성 ▷ C/C++ ▷ 일반

PRESENT BY WARP, 2016 24

리펙터링도구

PRESENT BY WARP, 2016 25

리펙터링Refactoring이란?• 소프트웨어 공학에서 결과의 변경 없이 코드의 구조를 재조정함을 뜻한다.

출처 | 위키백과

• 가독성 또는 유지보수의 편의 향상 목적

• Visual Studio에서는 리펙터링을 위한 도구 제공• 이름 바꾸기 (Ctrl + R, Ctrl + R)

• 메서드 추출 (Ctrl + R, Ctrl + M)

• 선언/정의 만들기

• 정의 위치 이동

• 매개 변수 다시 정렬 (Ctrl + R, Ctrl + O)

PRESENT BY WARP, 2016 26

Visual Studio의리펙터링도구사용하기1. 텍스트 편집기에서 리펙터링 할 영역을 선택

2. 편집(E) ▷ 리펙터링(R) 에서 원하는 명령 선택

※선택 영역이 없을 경우 메뉴가 나타나지 않음

PRESENT BY WARP, 2016 27

이름바꾸기• 단축키 : Ctrl + R, Ctrl + R

• 사용방법• 바꾸고 싶은 단어를 선택한다. 키워드 등, 바꿀 수 없는 단어는 기능하지 않는다.

• 기능• 선택한 단어의 이름을 바꾼다.

• 선택한 단어가 특정 범위에 속한 경우 범위까지 같은 이름만 바꿔준다.

• ex) T 라는 클래스 안의 data라는 변수를 리펙터링 할 경우, T::data로 인식되는 이름만 바꾼다.

PRESENT BY WARP, 2016 28

이름바꾸기사용화면

PRESENT BY WARP, 2016 29

메서드추출• 단축키 : Ctrl + R, Ctrl + M

• 사용방법• 메서드(함수)로 추출할 영역을 선택한 뒤 사용한다.

• 원하는 함수명을 입력하면 된다.

• 기능• 선택 영역이 함수로 분리된다.

• 만약 범위 밖의 값이 쓰였다면, 값의 이름을 인자로 준다.

• 컴파일러가 분리할 수 없다고 판단하면 기능하지 않는다.

PRESENT BY WARP, 2016 30

메서드추출

PRESENT BY WARP, 2016 31

메서드추출

PRESENT BY WARP, 2016 32

잠재적수정사항• 잠재적 수정 사항이란?• 함수가 선언만 되어 있고 실제 정의를 찾을 수 없는 경우

• 경고 오류 표시선(녹색 물결선)이 표시

• [Ctrl] + [.] 버튼을 눌러 빠른 작업 가능

PRESENT BY WARP, 2016 33

빠른작업• 빠른 작업이란?• 선택한 함수에 대한 스텁(stub) 작업(선언/정의 만들기, 정의 위치 이동) 제안

• [Ctrl] + [.] 버튼을 눌러 빠른 작업 가능

• 선언/정의 만들기

• 적절한 위치에 정의를 만든다.

• 정의 위치 이동

• 선언이 없는 경우 : 해당 위치를 선언으로 바꾸고 정의 생성

• 선언과 정의가 모두 있는 경우 : 선언 위치에 정의

PRESENT BY WARP, 2016 34

매개변수다시정렬(서명변경)• 단축키 : Ctrl + R, Ctrl + O

• 사용방법• 함수 이름을 선택한다.

• 기능• 선택된 함수의 매개 인자를 관리하는 창 표시

• 추가 / 제거 / 변경 / 되돌리기 가능.

• 실험적 기능이기 때문에 버그가 꽤 존재

PRESENT BY WARP, 2016 35

참고자료• MSDN• 전구를 사용하여 빠른 작업 수행 | https://msdn.microsoft.com/ko-kr/library/dn872466.aspx

• Visual Studio 2015에서 디버그 시작 | https://msdn.microsoft.com/ko-kr/library/dn986851.aspx

PRESENT BY WARP, 2016 36

참조프로젝트

PRESENT BY WARP, 2016 37

참조프로젝트란?• 작업 프로젝트가 참조하는 프로젝트라는 의미로 참조 프로젝트라고 부름

• 목적1. 소스 코드가 있는 라이브러리 프로젝트가 있고,

2. 디버깅 시 라이브러리 소스 코드에 접근하고 싶을 때

• 용도• 프로젝트 독립적인 라이브러리를 사용할 때

• 각 기능을 모듈화 하여 컴파일 시간을 단축시키고 싶을 때

참조 프로젝트의 예

PRESENT BY WARP, 2016 38

참조프로젝트를만드는방법•정적 라이브러리로 구현• 솔루션에 새 프로젝트 추가(기존 프로젝트가 있을 경우 생략)

• Win32 프로젝트 ▷ 정적 라이브러리 로 프로젝트 생성

• 메인 프로젝트의 참조 아이콘 에서 참조 추가(R)... ▷ 참조 프로젝트 선택

• 메인 프로젝트의 속성에서 추가 포함 디렉터리에 참조 프로젝트의 프로젝트 디렉터리 추가

+ 되도록 상대경로로 설정

• 메인 프로젝트에서 호출할 참조 프로젝트의 헤더 파일 포함

• 시작 프로젝트는 항상 메인 프로젝트로 하면 자동적으로 종속된 모든 정적 라이브러리 우선 빌드

PRESENT BY WARP, 2016 39

효과• 라이브러리 소스 코드에 미리 컴파일 된 헤더를 추가할 필요 없음

• 독립적인 라이브러리가 되었기 때문에 다른 프로젝트에서 사용 가능

• 모듈화 되었으므로 단위 테스트 가능

• 라이브러리를 수정할 경우 라이브러리만 다시 빌드하면 됨

PRESENT BY WARP, 2016 40

소스제어

PRESENT BY WARP, 2016 41

사전준비• 설치 시 Visual Studio용 GitHub 확장 [타사] 체크

• 설치 후, 소스 제어를 원하는 프로젝트화면 우측하단에 게시 버튼이 있으면 됨※없을 경우 최신 버전으로 Visual Studio 재설치 권장

• 새 프로젝트를 만들 때 설정하기

• 새 Git 리포지토리 만들기(G) 체크

PRESENT BY WARP, 2016 42

게시하기• 어디에 게시할 지 선택• Visual Studio Team Services

• Microsoft에서 제공하는 무료 무제한 Git 리포지토리.

• Publish to GitHub

• GitHub에 원격 리포지토리를 생성하여 거기에 게시

• GitHub 계정 필요

• Private으로 설정할 경우, 비공개 리포지토리 생성 가능(유료)

+ GitHub 학생 지원 팩으로 사용 가능

• 게시하지 않으면 로컬 리포지토리로만 사용

• 타른 작업 공간과 동기화 작업 불가능

• 커밋 / 되돌리기 작업 수행 가능

PRESENT BY WARP, 2016 43

기본적인사용방법• 소스 파일 옆에 아이콘이 표시됨• 변경이 되지 않은 부분

• 변경이 된 부분

• 변경 사항이 있으면 다음 방식으로 커밋• 솔루션 탐색기의 변경된 소스 파일을 우클릭 ▷ 소스제어

• 우측 하단에서 연필 부분을 클릭

• 팀 탐색기 ▷ 변경 내용

• 변경 시 커밋 내용을 반드시 작성

PRESENT BY WARP, 2016 44

한번에일부만커밋하고싶어요• 팀 탐색기 ▷ 변경 내용 ▷ 커밋하고 싶은 항목 우클릭 ▷ 스테이징(S)

• 스테이징 된 항목만 커밋

• 변경 취소

• 해당 항목만 직전 커밋 내용으로 되돌아감

PRESENT BY WARP, 2016 45

변경내역을보고싶어요• 항목 우클릭 ▷ 기록 보기(H)

• 커밋 내역을 표시• 커밋 ID, 만든 사람, 일자, 커밋 내용

• 더블 클릭: 해당 커밋 시점의 내용 열람 가능

PRESENT BY WARP, 2016 46

내가뭘바꾼거지?• 항목 우클릭 ▷ 수정되지 않은 항목과 비교(C)

• 좌측이 직전 커밋 파일, 우측이 현재 파일

• 빨간색 : 제거됨

• 초록색 : 추가됨

• 변경된 부분은 강조하여 표시됨

• 스크롤 바에서 변경 부분을 표시

• 줄 단위로 삭제된 부분은 회색 빗금

PRESENT BY WARP, 2016 47

PRESENT BY WARP, 2016 48

원격리포지토리에게시• 우측 하단 ↑표시에 원격 리포지토리에 게시되지 않은커밋 개수 표시

• 팀 탐색기 ▷ 동기화 또는 ↑ 더블클릭

• 나가는 커밋 ▷ 푸시

• GitHub 계정 동기화 필요

PRESENT BY WARP, 2016 49

원격리포지토리와동기화• 팀 탐색기 ▷ 동기화

• 들어오는 커밋

•페치(Fetch) 로컬 저장소에 반영하기 전 미리보기

•끌어오기(Pull) 원격 저장소에서 로컬 저장소에 반영

• 커밋되지 않은 변경사항이 있으면 Pull 불가능

PRESENT BY WARP, 2016 50

쟤가나랑같은걸고치고있었어!• 나가는 커밋과 들어오는 커밋에 충돌이 있을 경우 충돌

• 병합(Merge)을 진행하여 최종적으로 어떤 소스를 사용할지 결정

• 둘 중 하나로 병합 가능

PRESENT BY WARP, 2016 51

내코드와쟤코드가완전개판• 두 버전의 일부분을 조합하여 병합하고 싶을 땐 병합 선택

• 아래와 같은 창이 나타나고, 각 수정 영역에서 원하는 버전을 선택하면 결과에 반영

PRESENT BY WARP, 2016 52

리포지토리의역사• 우측 하단의 Y 아이콘 ▷ 기록 보기(H)

• 기능• 커밋 내역으로 전체 작업 진척 파악 가능

• 분기별 커밋 내역을 그래프로 시각화

• 특정 커밋 버전에서 새 분기 작성 가능

• 옛 버전으로 되돌리기 가능

PRESENT BY WARP, 2016 53

실험이필요합니다.• 원본 버전을 유지한 채 새로운 기능을 추가하고 싶은 경우

=실패하면 그냥 싹 날려버려도 되게

• 분기(brunch) 기능을 제공• 자세한 설명은 생략

• 우측 하단의 Y 자 아이콘 클릭 ▷ 새 분기(N)

• 팀 탐색기 ▷ 분기 ▷ 새 로컬 분기 시작 위치(N)

PRESENT BY WARP, 2016 54

Q & A

PRESENT BY WARP, 2016 55

같이보면좋을내용• 디버깅

• Visual Studio 사용 설명서(초급)

PRESENT BY WARP, 2016 56

THANK YOU

PRESENT BY WARP, 2016 57