일상에서도 그렇지만 특히 프로그래밍에서 이름을 붙이고, 사용하는 것은 꽤 중요한 문제이다
그리고 자바 언어는 네이밍 규칙이 꽤 엄격한 편에 속한다
따라서 실제 개발을 시작하기 전 몇몇 기초적인 네이밍 규칙을 알아둔다면 도움이 될 것이다
(클래스, 메서드, 패키지 등 Java 필수 객체들에 대한 기초 개념은 갖고 있다고 가정하겠다)
Java 자체 규칙
안 지키면 작성한 프로그램이 의도한 대로 동작하지 않거나, 에러가 발생하거나, 아예 실행이 안될 수 있다
- 파일명과 똑같은 (대소문자 구분) 이름을 가진 클래스가 있어야 한다
Java가 처음 실행할 때 파일명과 같은 이름을 가진 클래스에 있는 "main" 메서드를 읽는 것이 기본 설정이기 때문이다
물론 설정은 변경이 가능하며, 웹 개발에서 Spring Boot를 주로 사용하는 지금은 @SpringBootApplication annotation 위치를 최상위로 본다 - 패키지, 클래스 등을 불러올 때는 대소문자까지 정확하게 구분하여 적는다
굳이 언급할 필요가 있나 의아할 수 있지만 라이브러리에 있는 것을 불러올 때 실수하는 경우가 꽤 있다 - 변수명에는 언더바('_'), 달러('$') 외에 다른 특수문자를 사용할 수 없으며, 숫자로는 시작할 수 없다
- 당연하게도 예약어는 변수명으로 사용할 수 없다
(eg. "String", "static", "System" 등) - 적용 범위를 (Scope) 잘 구분하여 사용한다
예를 들어, 지역 변수에 전역 변수명과 똑같은 이름을 붙일 수 없다
개발자 불문율
안 지킨다고 해서 프로그램이 동작하지 않는 것은 아니지만, 대부분 의식을 거치지 않고 당연한 듯 지키고 있는 규칙들이므로 원활한 읽기와 소통을 위해 지켜주는 것이 좋다
(잘 지은 이름 하나가 열 마디 설명보다 더 나은.. 경우는 없겠지만 거의 대신할 수 있을 정도일 때가 꽤 있다. 규칙을 익히는 데 도움이 되기도 하고, 나중에 확장하거나 소스를 공유하여 협업하게 될 수도 있으니 혼자 개발하는 프로젝트라 하더라도 규정을 정하고 일관되게 지키는 연습을 하도록 하자)
단, 이 문단에 적은 규칙들은 개인 경험 상 대부분 적용됐던 것들을 적은 것으로, 맞고 틀린 문제가 아니라서 회사 또는 프로젝트에 따라 다른 규칙을 사용할 수 있음을 유의하기 바란다
- 이름에 영문자 외에 다른 문자는 가급적 사용하지 않는다
호환성 문제 등으로 불필요한 시간 낭비가 발생할 가능성을 피하기 위함이다
다만 test (검증) 쪽에서는 주석 대신 그냥 메서드 이름을 한글로 작성하는 경우도 있다 - 특수 문자로 시작하는 이름은 피한다.
언더바나 달러 기호로 시작하는 이름은 예약어이거나 Java 내부에서 사용할 목적인 경우가 많으므로 불필요한 오해나 충돌을 불러일으키기 쉽다. - 패키지는 도메인을 온점으로 구분한 후 역순으로 배치하여 생성하며, 소문자로 작명한다
계층 단계를 추가해서라도 가능한 1개 단어로만 만들지만, 불가피한 경우 소문자 스네이크 케이스를 (snake_case) 주로 사용하는 것 같다
eg. 도메인: "seok.tistory.com" >> 패키지: "com" \ "tistory" \ "seok" - 클래스는 파스칼 케이스로 (PascalCase) 작명한다
따라서 대개 파일명도 대문자로 시작한다
또한 속성들을 잘 아우르면서도 분류를 명확히 해주는 단수 명사를 사용한다
예를 들어, 바퀴, 문, 엔진, 마력 같은 속성들을 가졌다면 "Something" 같은 모호한 표현이나 "Vehicle" 같은 포괄적인 단어보다는 "Car"를 사용하는 것이 더 적절할 것이다 - 메서드와 변수는 캐멀 케이스로 (camelCase) 작명한다
단, 상수는 대문자 스네이크 케이스로 (SNAKE_CASE) 작명한다
때때로 DB와 직접적인 관계가 있는 Entity 등에서는 변수명에 소문자 스네이크 케이스나 케밥 케이스를 (kebab-case) 적용하기도 한다 - 메서드명은 역할을 잘 드러내는 동사로 작성한다
입력받은 문자를 암호화하는 동작을 한다면 명사인 "password" 보다는, 동사에 약간의 설명을 덧붙여 "encryptString", "makePassword"와 같이 적는 것이 좋고, 설명 주석까지 덧붙여 준다면 금상첨화가 될 것이다 - 변수명은 속성을 간결하고 명확하게 표현하는 명사를 선택한다
단, boolean 변수는 예외적으로 is, can, has 같은 접두어를 붙여서 질문형으로 만드는 경우가 많다
'개발 > 자바 Java' 카테고리의 다른 글
[jQuery] 코드 블럭 복사하기 - (문제 인지) 플러그인들과의 충돌 (2) | 2024.05.17 |
---|---|
[Java 초급] printf 메서드 서식 지정자 (0) | 2024.05.14 |
[Java 초급] 접근 제한자 (0) | 2024.05.14 |
[Java 입문] JDK (Java) 설치 및 환경 변수 확인 (0) | 2024.05.11 |
[Java 입문] JRE? JDK? 기초 용어 정리와 다운로드 (0) | 2024.05.11 |
[노트패드++] JAVA 컴파일 및 실행 (0) | 2024.04.08 |