이전에 프로젝트를 진행할 때는 컨벤션을 두고하지 않았다. 팀의 규칙들 조차도 정하지 않아서 중구난방인 경우가 많았다!!
이번에는 컨벤션을 정해서 해본 경험들이 있는 친구들이 있었고, 그 친구들의 주도하에 컨벤션과 팀 규칙들도 정했다~!!
나는 이런 것을 정하고 하는 것이 처음이여서 너무 설렜다,,,!! 이게 진짜 개발자가 하는 프로젝트인가,,,👻
Team Ground Rule
1. 정모는 반드시 참여하기로 했다,,!!정모는 1주일에 한번 1시간 이상인데,,,2시간이 넘었으면 바로 끝내기로 했다!!(너무 길어지면 지치고, 머리도 잘 안돌아가니까 결론이 안나니까~~) 정모 내용은 회고도 하고 동기부여도 하고 의견 다른 거 있으면 토론하고 싸우기로 했다,,!! 같이 하는 프로젝트니까!!!
2. 중요한 안건이 있을 경우 회의 잡아서 처리하기,,!!
3. 불만이 생기면 서로 부담없이 말하기!! 대신 상처받기 없기(쉽진 않겠지만ㅋㅋ)
4. 중요한 일이 생겨 task를 못했거나 정모를 참여를 못할 경우는 부담없이 말하기
5. 트러블이 생겼을 경우,,
서로 다른 사람들이 모여서 프로젝트를 진행하니, 당연히 트러블이 생길 수도 있고 의견이 불일치 할때도 있지,,,!!
이때, 20분이 초과됐을 경우는 10분동안 쉬는 타임을 가지면서 자신의 생각을 객관화하여 바라보기(너무 자기 생각이 옳다고 생각해서, 그걸 내려놓지 못하는 경우가 있으니,,,내가 그런다,,,)
후에도 20분정도 더 토론했는데 결과가 안난다 그러면 투표로 정하자(민주주의니까 다수결로!!!그리고 암말하지 않기)
개발 Rule~
1. 코드 리뷰하자,,,!! PR보낸후 merge하기 전에 코드 리뷰하기
2. Test code작성. 어떤 예외 상황이 있을지 모르니 꼼꼼하게 test code 작성하자,,
3. package구조화 -> 백엔드는 도메인 별로 나눈후 안에서 layer별로 나눴다!!
4. 문서화 작업
- api documentation -> spring rest docs
- 회의록 -> notion활용
- 팀 기술 블로그로 trouble shooting, 생소한 것들을 공부해서 포스팅 -> notion을 쓸지, tistory를 쓸지 고민중
컨벤션
우리는 사소한 것까지 다 정했다,,!!일관성있게 하려고, 그래서 좀 오래걸렸지만 나중엔 좋겠지,,,
Git 브랜치 전략
현업에서 많이 사용하는 git flow전략을 사용하기로 했다!! 조금 복잡하지만 현업에서 많이 사용한다니까 미리 경험하는 것도 좋다 생각해서 채택!! 그리고 팀원 중 한명이 Git tool로 gitkraken 사용하는데 좋다고 해서 나도 사용해보기로 했다!!
git flow에 대한 자세한 설명은 https://techblog.woowahan.com/2553/
우린 Git-flow를 사용하고 있어요 | 우아한형제들 기술블로그
{{item.name}} 안녕하세요. 우아한형제들 배민프론트개발팀에서 안드로이드 앱 개발을 하고 있는 나동호입니다. 오늘은 저희 안드로이드 파트에서 사용하고 있는 Git 브랜치 전략을 소개하려고 합
techblog.woowahan.com
백엔드 코드 컨벤션
- package: 소문자
- 변수: lowerCamelCase
- 메서드: lowerCamelCase
- 클래스: UpperCamelCase
- 상수: ABC_DEF_GHI
- 축약 x
- 공백 두 줄 x
- end of line(클래스 마지막 줄은 공백으로 두기)
- else 예약어를 쓰지 않는다.
힌트: if 조건절에서 값을 return하는 방식으로 구현하면 else를 사용하지 않아도 된다.
else를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다.
- 들여쓰기 최대 1줄
- 3항 연산자 x
- 메서드 15라인 넘지 않게
- setter 사용하지 않기.
- 변수명에 collection x -> ex) carList
- 스페이스바랑 tab 혼합 x -> tab
들여쓰기 최대 1줄은 메소드가 길어지는 것을 방지하고, 메소드가 한가지 일만 할 수 있게 역할을 부여할 때, 연습이 된다해서 넣었다!!
### 띄어쓰기
int[] array = new int[n];
List<Car> cars = new ArrayList<>();
for (int i = 0; i < n; i++) {
int value = i;
}
### class 선언 순서
public class Car {
상수
클래스 변수
인스턴스 변수
생성자
팩토리메서드
메서드
기본 메서드(equals, hashCode, toString...)
}
나름 많은 제약이 있고, 신경써야 될 것도 많은 것 같지만, 이것이 나중에 우리 코드의 가독성을 높여주고, 소통할 때 편하도록 만들어준다고 생각해 많이 넣었다,,,!! 이번에는 다른 사람들이 읽기 좋은 코드를 한번 만들어 보자,,,!!
'📽project > 🎀ReBoN' 카테고리의 다른 글
OAuth login 구현 구조 변환 과정 (0) | 2022.05.29 |
---|---|
코드리뷰 처음이니? (0) | 2022.03.28 |
설계,,,,이렇게 하는 게 맞는 건가,,,?? (0) | 2022.03.10 |