티스토리 뷰

반응형

코딩 컨벤션(코드 컨벤션)

Coding conventions are a set of guidelines for a specific programming language that recommend programming style, practices, and methods for each aspect of a program written in that language.
출처 :
https://en.wikipedia.org/wiki/Coding_conventions

 

특정 프로그래밍 언어에 대한 프로그래밍 스타일, 관행 및 방법을 권장하는 일련의 지침이다.

 

코딩 컨벤션을 사용해야 하는 이유

1.1 Why Have Code Conventions
Code conventions are important to programmers for a number of reasons:
80% of the lifetime cost of a piece of software goes to maintenance.Hardly any software is maintained for its whole life by the original author.Code conventions improve the readability of the software, allowing engineers to understand new code more quickly and thoroughly.If you ship your source code as a product, you need to make sure it is as well packaged and clean as any other product you create.
출처 : https://www.oracle.com/java/technologies/javase/codeconventions-introduction.html

 

코딩 컨벤션을 사용해야 하는 이유가 많이 있지만 그중 가장 큰 이유는 유지보수이다. 소프트에어 개발에 들어가는 비용 중 80%가 유지보수에 소모 된다고 한다. 원본 작성자가 소프트웨어를 계속 책임지면 좋겠지만, 아쉽게도 그런 일은 거의 없다. 그렇기에 누군가가 새롭게 투입될 것이며 소스 코드를 이해하고 유지보수를 해나가야 한다. 코드 규칙은 소프트웨어의 가독성을 향상시켜 엔지니어가 새 코드를 더 빠르게 완벽하게 이해할 수 있도록 한다. 

 

즉 나 외에 누군가 코드를 빠르게 읽을 수 있고 전체가 일관된 코드 스타일을 유지하여 협업에 용이하고 깨끗한 코드를 만들 수 있도록 하는 일종의 규약이다. 코딩 컨벤션에 대해서는 자바 기본 교제, 클린 코드, 리팩토링 등에서도 수없이 언급이 되어 있고 예제가 잘 나와있다.

지금 다시 책을 읽어보면 이러한 내용들이 잘 보이지만, 그 당시에는 중요하지 않은 부분이라 생각하여 대충 읽었던 것 같다. 

 

IDE를 활용한 코딩 컨벤션 적용

개발자가 아무리 코딩 컨벤션을 잘 지키려고 노력을 해도 가끔은 실수를 할 수 있다. 그렇기에 IDE의 도움을 받아서 코드를 리포매팅하면 이러한 실수를 줄일 수 있고, 팀원 모두 동일한 코딩 컨벤션을 유지할 수 있다. 

 

1. 코딩 컨벤션 다운로드

팀내에 새로운 스타일의 코딩 컨벤션을 만들어도 좋지만, 이미 다른 사람들이 만들어서 많이 사용하고 있는 스타일을 가지고 와서 사용하면 시간을 절약할 수 있다. 여기서는 구글의 코딩 컨벤션을 사용한다. 깃헙 주소에서 intellij-java-google-style.xml 파일을 다운로드 받으면 된다. 

 

2. IDE 적용

해당 글에서는 intellij + mac os 기준으로 설명한다. 

1) Code Style 적용

Preferences (command + ,) > Editor > Code Style > Java > 설정 버튼 > import scheme > intellij IDEA code style XML

위 경로에 다운로드 받은 intellij-java-google-style.xml 를 등록해 준다. 

 

2) Java 언어 추가 설정

기존 Google Style에서는 Tab size, Indent가 2로 설정되어 있어서  4로 수정해 주며 Use tab character를 체크 하였다.

 

Spaces탭에서는 기존 등호 표식에 띄어쓰기가 없이 설정되어 있어서, Around operators > Assignment operators (=,+=,..) 를 체크하였다. 

 

3) 사용

변경할 코드에서 OPTION + COMMAND + L(CTRL + ALT + L) 단축키를 누르면 자동으로 코드가 포맷에 맞게 수정된다. 

 

 

3. 추가 플러그인 적용

intellij에서는 다양한 플러그인들이 있는데 CheckStyle이라는 플러그인으로 추가적으로 코드룰을 체크할 수 있다.

1) 설치

Preferences (command + ,) > Plugins > CheckStyle-IDEA > install > Apply

 

2) 사용

Preferences (command + ,) > Tools > CheckStyle > + 버튼을 선택하여 이미 다운로드하여 적용시킨 intellij-java-google-style.xml 파일을 등록해주고 Active 설정을 해준다. 

 

Active 설정을 해두면 위 사진과 같이 탭등이 활성화되어 몇칸 적용되어 있는지 보여지고 자바 파일에서 Checkstyle룰에 어긋 나는게 있으면 알림 메시지가 적용된다. 위와 같은 부분이 너무 신경쓰인다면 Active를 선택하지 않으면 된다.

  

실제 사용되는 부분을 보면 인텔리제이 하단바에 아래와 같이 CheckStyle이 생성되어 있다. 분석하고자 하는 자바 파일을 연 다음에 하단바에서 체크하고자 하는 코딩 컨벤션을 Rules를 통해 적용후 초록 버튼을 누르면 아래와 같이 코드 스타일을 체크해 준다. AccountService.java 파일에 CheckStyle을 적용해 봤는데 위와 같이 Javadoc comment가 없다는 것과 Line에 Tab이 들어가 있다는 주의 메시지를 볼 수 있다. 이는 적용한 코딩 컨벤션 파일의 내용 때문에 그런 것이므로 해당 xml파일을 열어 관련 내용을 수정해 주면 더이상 나타나지 않는다.

 

또 다른 방법으로는 분석하고자 하는 자바 파일을 연 다음에 우클릭으로 사진과 같이 Check Current File을 선택해 주면 된다.

 

4. intellij Analyze

intellij에서는 이외에도 Analyze 기능을 통해 코드 품질을 높일 수 있다. 이 기능이 되게 좋다고 생각하며 이전에는 모르고 사용하지 않아서 아쉬운 부분이라 생각한다. 좋은 IDE를 사용하면서도 그 기능을 다 활용하지 못했다. 

분석하고자 하는 파일 우클릭 > Analyze > Inspect Code 

 

하단바에 Inspection Results라는 탭이 생기며 고쳐야 하는 부분이나 변경 가능한 것들에 대해 안내해준다.

 

옆에 소스 코드에 커서를 두면 변경할 수 있는 것에 대해 안내해주며 클릭시 자동으로 코드를 변경해준다. 

 

 

적용 후기

코딩 컨벤션을 사용하려고 한 계기는 얼마 전 가진 코드 리뷰 경험 때문이었다.

나는 개발자로 지내면서 코드 리뷰를 많이 해본 경험이 없었다. 리뷰를 진행해도 비즈니스 로직과 사용 기술 그리고 완전 신입 때는 들여쓰기 정도만 이야기를 나눴던 것 같다. 그러나 이번에 진행하며 객체지향설계원칙이나 도메인 설계, DTO, Exception, 코딩 컨벤션 등에 대해 이야기를 나누며 내가 많이 부족하다는 걸 인지하게 됐다. 그중 가장 기억에 남는 부분이 코딩 컨벤션이다. 

언제나 코드 작성시에는 깔끔하게 잘 정리했다고 생각했는데 이번 코드 리뷰를 제외하고도 다른 코드 리뷰에서도 코딩 컨벤션 이야기가 나왔다.  변수의 네이밍 규칙뿐만 아니라 일관성 없는 공백과 띄어쓰기가 문제였다.

vue.js로 개발을 진행할 때는 eslint에 대해 알게 되었고 어느정도 적용을 했으나 java 개발에 있어서는 왜 이런 부분을 인지 못한지 모르겠다.  리뷰어 분들 중 한분께서 인텔리제이에서 eslint 처럼 코딩 컨벤션을 관리할 수 있다는 말씀을 해주셨고 나태하게 지내다가 이부분이 생각 나서 실제 코드에 적용하고 글을 써봤다. 

아직 완전하게 내것으로 적용하지는 못했다. 위와 같이 적용한 코딩 컨벤션을 Checkstyle 플러그인으로 룰체크를 했을 때 나타나는 에러도 아직 없애지 못했다. 귀찮음에 져서 계속 미루게 된다.. 어서 없애야 하는데 ㅠ 그래도 이를 통해 코딩 컨벤션을 신경쓰고 클린 코드를 지향할 수 있도록 내 자신이 인지할 수 있는 계기가 됐다.

 

 

추가로 살펴보면 좋은 글 

네이버 캠퍼스 핵데이 : https://naver.github.io/hackday-conventions-java/

 

캠퍼스 핵데이 Java 코딩 컨벤션

중괄호({,}) 는 클래스, 메서드, 제어문의 블럭을 구분한다. 5.1. K&R 스타일로 중괄호 선언 클래스 선언, 메서드 선언, 조건/반복문 등의 코드 블럭을 감싸는 중괄호에 적용되는 규칙이다. 중괄호

naver.github.io

 

참고

https://velog.io/@injoon2019/IntelliJ%EC%97%90-Google-Java-Style-Guide-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0

 

IntelliJ에 Google Java Style Guide 적용하기

Google Java Style Guide는 구글에서 자바를 사용할 때 코드를 작성하는 사람, 읽는 사람의 편의성을 위해 양식을 통일해둔 것이다.https://google.github.io/styleguide/javaguide.html(구글 자바 스타일 가이드

velog.io

https://medium.com/@ohjongsung/%EC%9D%B8%ED%85%94%EB%A6%ACj-%EA%B8%B0%EB%B3%B8-%EC%84%A4%EC%A0%95-part2-87c996594b0a

 

인텔리J 기본 설정 Part2

Part1에 이어서 인텔리J에 플러그인 설정한 내용을 기록으로 남긴다. IntelliJ IDEA 2016.3.5 기준이다.

medium.com

 

 

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함