패스 어라운드(Pass Around)#
패스 어라운드는 마치 책을 여러 사람이 돌려가며 읽는 것처럼, 코드를 여러 개발자들이 순차적으로 검토하는 방식이다.
각 리뷰어는 자신의 전문 분야나 관점에서 코드를 검토하고 피드백을 제공한다.
예를 들어, 한 개발자는 성능 관점에서, 다른 개발자는 보안 관점에서 같은 코드를 검토할 수 있다.
실제 패스 어라운드 프로세스의 예시:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| // 첫 번째 리뷰어 (성능 전문가)의 검토
public class DataProcessor {
public List<Result> processData(List<Data> dataList) {
// 성능 관련 코멘트:
// "대용량 데이터 처리 시 메모리 문제가 발생할 수 있습니다.
// 스트림을 사용하여 처리하는 것이 좋겠습니다."
return dataList.stream()
.filter(Data::isValid)
.map(this::transform)
.collect(Collectors.toList());
}
}
// 두 번째 리뷰어 (보안 전문가)의 검토 후 수정된 버전
public class DataProcessor {
public List<Result> processData(List<Data> dataList) {
// 보안 관련 코멘트:
// "입력 데이터의 유효성 검증이 필요합니다.
// 또한 처리 과정에서의 로깅이 필요합니다."
if (dataList == null) {
throw new IllegalArgumentException("Data list cannot be null");
}
logger.info("Starting data processing for {} items", dataList.size());
return dataList.stream()
.filter(this::validateData)
.map(this::transform)
.collect(Collectors.toList());
}
}
// 세 번째 리뷰어 (테스트 전문가)의 검토 후 추가된 테스트 코드
@Test
public class DataProcessorTest {
// 테스트 관련 코멘트:
// "경계 조건과 예외 상황에 대한 테스트가 필요합니다."
@Test
void testProcessDataWithNullInput() {
assertThrows(IllegalArgumentException.class,
() -> processor.processData(null));
}
@Test
void testProcessDataWithEmptyList() {
assertTrue(processor.processData(Collections.emptyList()).isEmpty());
}
}
|
프로세스#
- 코드 작성자가 리뷰 대상 코드를 공유
- 참여자들이 개별적으로 코드 검토
- 각자의 의견을 메일이나 시스템에 기록
- 코드 작성자가 피드백을 수집하고 필요한 수정 진행
패스 어라운드의 장점과 효과#
다양한 관점에서의 검토
여러 전문가의 시각으로 코드를 검토할 수 있다:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| // 여러 전문가의 관점이 반영된 코드 예시
public class PaymentService {
// 비즈니스 로직 전문가의 관점
@Transactional
public PaymentResult processPayment(Payment payment) {
// 보안 전문가의 관점
validatePaymentData(payment);
// 성능 전문가의 관점
@Cacheable("payments")
PaymentResult result = paymentProcessor.process(payment);
// 모니터링 전문가의 관점
metrics.recordPaymentProcessing(result);
return result;
}
}
|
유연한 일정 관리
각 리뷰어가 자신의 시간에 맞춰 검토할 수 있다.
패스 어라운드의 효과적인 구현 방법#
리뷰 순서 최적화
전문성과 가용성을 고려하여 리뷰 순서를 결정한다.
피드백 통합 관리
여러 리뷰어의 피드백을 효과적으로 관리한다.
참고 및 출처#