Skip to content

개발 꿀팁

jwel edited this page May 27, 2022 · 2 revisions

1. 개발환경 구축

좋은 개발환경은 효율적인 개발을 위해 필수적이다. 이곳에서는 초심자에게 권장할만한 세팅을 제안한다.

1.1 git, eclipse 설치

git-bash와 eclipse를 우선 설치하자.

1.2 ssh 키 등록

github를 제대로 사용하려면 ssh 키를 등록해야 한다. 이전에는 https로도 사용이 가능했으나, 보안 정책을 바꾸면서 push는 ssh로만 가능하다. 이곳을 참고하여 등록하자.

1.3 eclipse 연동

eclipse에서 import projects를 클릭하고 Git -> Projects from Git -> Clone URI 를 선택한다. 그 이후 URI에 개발에 참여할 repository의 메인 페이지로 가서 code를 클릭하고 ssh주소를 붙여넣는다. 그 다음은 next를 계속 클릭하다가 Select a wizard to use for importing project가 보이면 import as general project를 고르자.

1.4 gradle 설치

gradle은 java를 포함한 프로젝트를 자동으로 빌드하게 도와주는 툴이다. 이를 설치하기 전에 JAVA를 설치해야 하며 이곳에서 다운로드 받아 설치하자. 이제 gradle을 설치할 차례이다. 우선 이곳에서 최신의 버전을 다운로드하자. binary-only를 권장한다. 다운로드 받았다면 압축을 풀어 C:\"Program Files"에 붙여넣자. 그 디럭토리 안에 들어가면 bin 디렉토리가 있는데 그 경로를 이곳을 참고하여 Path환경변수에 등록한다.

1.5 git 사용

기본적으로 프로젝트를 우클릭한 후 Team 탭에서 사용할 수 있다. branch는 이곳을, commit과 push는 이곳을 참고하자.

1.6 gradle 연동

Package Explorer 에서 빈공간을 우클릭 후 import를 클릭한다. 그 다음 Gradle -> Existing Gradle Project 를 선택한다. 이후에 Import Options 가 나오면 Specific Gradle version 을 선택하고 설치한 Gradle 버전을 입력하자.

1.7 빌드테스트

상탄 탭의 Project -> Build All 을 눌러 빌드를 진행할 수 있다.

2. 검색 잘하는 법

그 어떤 개발자도 모든 정보를 전부 뇌에 기록한 사람은 없다. 뛰어난 개발자는 그것을 어떻게 찾아야 하는지 알 뿐이다. JAVA 프로젝트를 진행한다면 당연히 JAVA에 대해서 알아야 한다. 전체 틀을 익히려면 JAVA 교과서도 나쁘지 않으나, 필요한 기능을 원한다면 API를 찾아야 한다. 기본적으로 oracle의 공식 페이지에서 찾을 수 있다. 이곳은 클래스와 메소드에 대한 공식 명세를 볼 수 있는 장점이 있으나, 필요한 기능의 이름 조차 모를때, 구글이 필요하다. 과거에는 검색엔진이 성능이 좋지 않아 명사 키워드로 찾아야 했다. 그 예시로 "자바 이미지 바이트 변환"처럼 말이다. 그러나 현재는 자연어처리 기술이 충분히 발전되었기에, "자바에서 이미지를 바이트 배열로 변환하는 방법"처럼 완성된 문장으로 검색하는 것이 더 낫다. 더 나아가서, 한국어로 된 문서는 인터넷의 극히 일부분을 차지하므로 영어로 검색하는 것을 강하게 권한다. 이 예시에서는 "the way to convert image to byte array in JAVA" 정도가 되겠다.

3. 코딩 잘하는법

우선 이곳에서 말하는 코딩은 C과제에나 나올법한 삼각형 그리기 따위가 아님을 밝힌다. 코딩이란 근본적으로 어떤 기능이 필요할 때 그 기능이 어떻게 동작되어야 하는지 프로그래밍 언어로 기술하는 것이다. 이것을 잘하려면 기능을 구현할 때 그 기능이 정확하게 무엇인지를 이해해야만 구현을 제대로 할 수 있다. 다만 구현을 지시받았을 때, 이 기능이 무엇인지에 대해 설명을 받을 수 있는데, 이러한 설명은 필연적으로 코드에 비해 덜 구체적이다. 너무 설명이 빈약해도 문제지만, 코드 수준으로 구체적으로 지시해야 한다면 지시하는 사람은 차라리 직접 코드를 쓰는 것이 더 효율적이다. 따라서 구현을 지시받은 자는 그 의도를 어느정도는 유추해 내야 한다. 이 유추가 100% 정확할 수는 없기에 코드리뷰를 하는것이다. 실제 예시로, pytorch 프로젝트의 한 파일을 보면 그 클래스/메소드의 사용법에 대한 주석은 구현 부분의 주석과 분리되어 있는 것을 볼 수 있다. 그 기능의 포괄적인 문서화는 설계자가 하는 것이 맞지만, 구현 부분의 주석은 구현자의 책임이다. 그렇다면 이것을 어떻게 유추한다는 말인가? 주어진 정보는 프로젝트 문서, 식별자의 이름, 주석, 구두설명, 코드리뷰 등이 있으며 가장 중요한 것은 이 프로젝트가 무엇인지를 기술한 문서이다. 그 다음에 작업을 할당받은 부분의 식별자의 이름이 중요하다. 좋은 이름은 그 자체로 의도를 나타낸다. 지시하는 자가 주석과 함께 설명을 적는다면 더할나위없이 좋겠지만, 보통은 이렇게 친절히 작성해 주지 않는다. 심지어, UML 다이어그램같이 기본적인 클래스 설계 제공 없이 이러한 기능을 만들라는 지시가 있을 수도 있다. 이 경우에는 최대한 자주 코드리뷰같은 피드백을 진행해야 한다. 결국은 프로젝트의 의도를 잘 이해하는 것이 그 사람의 능력을 평가하는 지표중 하나가 된다. 물론 그 의도를 잘 설명하는 것도 충분히 중요하다.