포스트

5. 코딩 컨벤션 및 컴파일

코딩 컨벤션에 대한 짤막한 설명과 컴파일에 대해 알아보자.

5. 코딩 컨벤션 및 컴파일

코딩 컨벤션 및 세팅

코딩 컨벤션(Coding Conventions)? : 코딩을 할때 지켜야하는

코딩 컨벤션이 왜 필요한데? : 코드의 가독성이 매우 향상되기 때문.

  • 가독성이 향상되면 뭐가 좋길래… [위키백과_코딩컨벤션 본문]
    • 소프트웨어 수명 비용의 40%~80%가 유지 관리에 사용됩니다. [위키주석]
    • 원본 작성자가 평생 동안 소프트웨어를 유지 관리하는 경우는 거의 없습니다.
    • 코드 규칙은 소프트웨어의 가독성을 향상시켜 엔지니어가 새로운 코드를 보다 빠르고 철저하게 이해할 수 있도록 해줍니다.
    • 소스 코드를 제품으로 배송하는 경우, 귀하가 만드는 다른 제품과 마찬가지로 잘 포장되고 깔끔한지 확인해야 합니다.
짤 지식
  • monospace = 컴퓨터의 디폴트 폰트이다. (폰트 이름이 아님)

Compile(컴파일)

1
javac Hello.java

해당 명령어를 입력하게 되면 ⇒(compile)⇒ Hello.class이 나오게된다.

이때 VScode의 기본 encoding 언어는 UTF-8이고 window의 기본 encoding 언어는 ms-949 이다.

윈도우에서 VScode에서 작성한 코드를 읽어올 때는 당연히 윈도우 기본 ms-949의 형식으로 읽기 때문에 결국 언어 규칙이 맞지않아 오류가 나게된다.
→ Java 17까지 재현됐던 에러로 JVM이 Desk의 기본 읽어오는 언어 형식을 따라갔기 때문.
→ Java 18부터는 JVM이 기본 UTF-8로 설정되어 오류가 나지않는다.

  • 해당 오류 메시지 : unmappable character (0xED) for encoding x-winows-949

그래서 이 문제를 해결하기 위해 아래 명령어로 소스파일이 어떤 규칙에 따라 문자를 저장 했는지 컴파일러에게 알려준다.

1
javac -encoding UTF-8 [Hello.java](http://Hello.java)

소스파일 폴더와 컴파일 결과 파일 폴더 분리

컴파일을 하게되면 .java 파일과 .class 파일이 폴더에 남게 된다.
이때 소스파일(.java)와 컴파일 결과 파일(.class)를 분리를 한다면 배포가 편리하다는 장점이있다.
대부분 소스 파일이 있는 폴더를 src(source), 컴파일 결과 파일이 있는 폴더는 bin 폴더가 된다.

이를 위해 컴파일 및 실행 시 추가하는 옵션 명령어가 있는데 아래와 같다.

1
javac -d bin src/Hello.java
  • -d bin : -d(나의 디렉토리)에서 bin(bin이라는 폴더를 만들어) 컴파일을 해라.
  • src/Hello.java : src 폴더 안에 있는 Hello.java 파일을 찾아서.
1
java -cp(-classpath) bin Hello
  • -cp(-classpath) bin : JVM이 찾을 클래스 파일을 찾는데 사용하는 디렉토리.

개발 관리와 프로젝트

개발 관리의 편이를 위해 별개의 작업으로 분리 한 것 = 프로젝트

앱 단위로 프로젝트를 짜고, 팀장을 각각 둔다

App1 ⇒ Project A ⇒ src / bin, App2 ⇒ Project B ⇒ src / bin

Git 저장소와 프로젝트 폴더

  1. 저장소 안에 여러개의 프로젝트가 있는 구조
    • 저장소(Repo.)
      • 프로젝트A
      • 프로젝트B

    버전은 저장소 단위로 관리되기 때문에 프로젝트 단위로 관리할 경우 좋지 않은 방식이다

  2. 저장소 안에 하나의 메인 프로젝트와 여러개의 서브 프로젝트가 있는 구조
    • 저장소 (Repo.)
      • 프로젝트A
      • 서브 프로젝트1
      • 서브 프로젝트2
  3. 하나의 저장소에 하나의 메인 프로젝트
    • 저장소 (Repo.)
      • 프로젝트A
        • src
        • bin

    가장 자주 쓰이는 프로젝트의 구조이다

프로젝트 디렉토리 구조를 좀 더 본다면…
  • 프로젝트A
    • src
      • main ← 기본 소스 코드
        • java ← 사용하는 언어에 따라 폴더 생성
        • kotlin

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.