Skip to content

팀 구구콘의 개발 문화 💃

rimrim990 edited this page Aug 21, 2023 · 1 revision

🥰 팀 컨벤션

의견 제시와 질문은 적극적으로

하고 싶은 얘기는 담아두지 않고 얘기한다 🎙️

목소리는 크지 않게

부정적인 감정을 표출하지 않는다 🙅🏻

회의 시간에는 회의만

메뉴는 쉬는 시간에 정한다 😅

한 주제 이야기가 길어지면 queue에 넣고 다음 이슈 먼저 이야기한다

(Round-Robin)

6시 퇴근 금지

구구콘의 정시는 9시다 🔥

금요일은 문화의 날 💃 (오늘 할 일이 끝나면 6시 퇴근 가능)

⏳ 워크플로우

Start Develop

목요일 오전 10시

  • 온라인 회의로 진행한다
  • 해당 주에 담당할 이슈를 공유한다
  • 전날 배포에 관해 이슈가 있을 경우 공유한다

Finish Develop

금요일 오후 1시

  • 이전까지 해당 주에 맡은 이슈에 대해 develop 브랜치에 merge를 완료한다
  • 데일리 스크럼 이후 개발 완료한 이슈에 대해 브리핑한다
  • merge할 때는 squash해서 하나의 커밋에 feat: 기능 구현 (#PR번호) 형식으로 작성한다.

Check To Deploy

  • main ← develop PR을 오픈한다
  • 모든 팀원은 자신이 맡은 이슈에 대해 다시 한 번 확인하고, 버그 발견 시 fix 이슈 생성 후 해결한다

Deploy

수요일 오후 9시

  • main ← develop으로 merge한다
  • 배포 된 결과에 대해 자체 QA를 진행하고, 버그 발견 시 hotfix 이슈로 추가한다

✏️ 개발 컨벤션

Issue

  • 독립적인 기능 단위로 생성

Pull Request

  • 1 이슈 1 PR
  • 담당자를 제외한 모든 팀원을 리뷰어로 지정
  • merge 조건
    • 모든 리뷰어가 승인
    • 빌드 및 테스트 통과
  • 담당자만 merge 가능

Branch

주요 브랜치 (영구적)

  • main: 배포용
  • develop: 개발용

보조 브랜치 (일시적)

  • feature: 기능 개발용
  • hotfix: 긴급 버그 해결용
  • fix: 버그 해결용

Git Flow

기능 개발

  • main ← develop ← feature

버그 해결

  • main ← hotfix
  • develop ← fix

💻 코드 컨벤션

Production Code

  • 구글 자바 코드 컨벤션 적용
    • Column Limit 120자로 변경
    • 인덴트 4로 변경
  • 기본은 불변
    • 클래스, 필드, 매개변수
  • 한 함수에서는 하나의 기능만
  • 엔티티는 Reference Type을 사용하고 @NotNull , @Column(nullable = false) 적용

Test Code

@DisplayName("Order 단위 테스트")
class OrderTest {

	@Test
	@DisplayName("오더를 생성한다")
	public createOrder() {
		// when & then
	}

	@Test
	@DisplayName("아이디가 없으면 오더를 생성할 때 예외가 발생한다")
	public createOrderFail_nullId() {
		// given
		// when
		// then
	}
}
  • 메소드 이름을 (테스트할 함수 이름 + 결과)_(조건) 방식으로 작성
  • @DisplayName 형식은 given-when-then 으로 작성한다
    • 인수 테스트의 경우 then 부분에 상태 코드 응답을 적는다.
  • 메소드 내에 주석으로 given-when-then을 구분한다
  • 인수 테스트 + 단위 테스트
  • 메소드 signature가 120자 제한을 넘기는 경우, 모든 매개변수를 한 줄에 하나씩 쓴다
// 120 자 넘을 때
public void func(int a,
                 int b,
		 int c) {

}