오늘의 영어 표현 8/30 · 단계: PR 설명. 예문은 모두 이 글을 위해 지어낸 것입니다. 실제 저장소의 PR 을 옮긴 것이 아니며, 파일과 함수 이름은 예시입니다.
목차
한눈에 보기
| 표현 | No functional change (intended). / NFC |
| 뜻 | 동작은 바뀌지 않습니다(그렇게 의도했습니다). |
| 쓰는 자리 | 리팩터링·정리 PR 설명, 커밋 메시지 첫 줄 |
| 공손함 | 해당 없음. 사실을 알리는 꼬리표입니다 |
1. 뜻과 뉘앙스
functional 은 여기서 「기능의, 동작의」라는 뜻입니다. No functional change 는 「코드의 모양은 바뀌었지만 프로그램이 하는 일은 그대로」라는 뜻입니다. 함수 이름을 바꾸거나, 파일을 나누거나, 중복 코드를 합치거나, 주석과 서식을 정리하는 PR 이 여기에 해당합니다.
LLVM 의 용어집(Lexicon)은 NFC 를 No functional change 의 줄임말로 설명하고, 커밋 메시지가 순수한 리팩터링이나 정리임을 나타내기 위해 첫 줄에 붙인다고 적습니다. LLVM 개발자 정책도 서식이나 공백만 바꾸는 커밋은 동작을 바꾸지 않는다는 점을 밝히라고 하며, 보통 NFC 라고 적는다고 설명합니다. 다른 프로젝트에서도 이 줄임말을 알아보는 사람이 많지만, 처음 보는 저장소에서는 풀어서 쓰는 편이 안전합니다.
이 표현이 리뷰어에게 주는 신호는 분명합니다. 「동작의 차이를 찾지 않아도 됩니다. 모양만 보면 됩니다.」 그래서 수백 줄짜리 리팩터링도 리뷰 부담이 줄어듭니다. 반대로 NFC 라고 적어 놓고 실제로 동작이 바뀌면 신뢰를 크게 잃습니다. 그래서 확신이 없을 때는 intended(의도했다)를 붙여 No functional change intended 라고 씁니다. 「그렇게 의도했지만 혹시 다르면 알려 달라」는 뜻입니다.
2. 예문
상황 1: 리팩터링 PR 설명
Move the snapshot helpers from
controller.gointosnapshot.go. No functional change.
상황 2: 동작 변경과 정리를 나눌 때
This PR has two commits. The first one is a pure refactor (no functional change). The second one changes the default timeout from 30s to 60s.
리뷰어는 첫 커밋을 빠르게 넘기고 둘째 커밋에 집중할 수 있습니다. 동작 변경과 정리를 한 커밋에 섞지 않는 것이 좋은 습관입니다.
상황 3: 리뷰 답글
Good question. The only difference is the variable name, so this should be a no-op. No functional change intended.
no-op 은 no operation 의 줄임말로, 「아무 효과도 없는 변경」을 뜻하는 개발자 표현입니다.
3. 비슷한 표현과 차이
- No behavior change. 거의 같은 뜻입니다. 사용자 입장의 동작을 강조할 때 씁니다.
- Pure refactor / Cleanup only. 무엇을 했는지를 말합니다. No functional change 는 결과를 말합니다. 둘을 함께 쓰면 가장 분명합니다.
- No user-facing change. 내부 동작은 바뀌었을 수 있지만 사용자에게 보이는 변화는 없다는 뜻입니다. 범위가 다르므로 섞어 쓰지 않습니다. Kubernetes PR 양식에는 Does this PR introduce a user-facing change? 라는 칸이 따로 있습니다.
4. 한국인이 자주 하는 실수
- There is no function change. function 은 명사 「함수」로 읽혀 「함수는 바뀌지 않았다」로 오해될 수 있습니다.
- 고친 문장: No functional change.
- This PR doesn't change anything. 아무것도 바꾸지 않는 PR 은 필요가 없습니다. 무엇이 그대로인지 정확히 말해야 합니다.
- 고친 문장: This PR doesn't change any behavior; it only renames the helpers.
- NFC 만 단독으로 처음 보는 저장소에 쓰기. 줄임말을 모르는 리뷰어도 있습니다.
- 고친 문장: Refactor only, no functional change.
5. 한 줄 연습
다음 한국어 문장을 PR 설명으로 바꿔 쓰십시오.
테스트 헬퍼를 별도 패키지로 옮겼습니다. 동작은 바뀌지 않도록 했습니다.
모범 답안
Move the test helpers into a separate package. No functional change intended.
PR 설명의 첫 문장은 명령형(Move, Add, Fix)으로 쓰는 경우가 많습니다. 「바뀌지 않도록 했다」는 의도를 말하므로 intended 를 붙입니다.
티티 한마디. 리뷰어가 무엇을 안 봐도 되는지 알려 주는 것도 친절입니다.
참고
- LLVM Lexicon, 「NFC」: https://llvm.org/docs/Lexicon.html
- LLVM Developer Policy(커밋 메시지): https://llvm.org/docs/DeveloperPolicy.html
- Kubernetes PR 양식: https://github.com/kubernetes/kubernetes/blob/master/.github/PULL_REQUEST_TEMPLATE.md