Split View: Code Review 영어 표현 완벽 가이드 — PR 리뷰에서 바로 쓰는 실전 표현 100+
Code Review 영어 표현 완벽 가이드 — PR 리뷰에서 바로 쓰는 실전 표현 100+
- 들어가며
- 1. 변경 요청 (Requesting Changes)
- 2. 질문하기 (Asking Questions)
- 3. 칭찬하기 (Giving Praise)
- 4. 제안하기 (Making Suggestions)
- 5. 승인하기 (Approving)
- 6. 유용한 약어와 관용표현
- 7. PR 설명 작성하기
- 8. 어려운 상황 대처하기
- 실전 연습: 리뷰 시나리오
- 마무리

들어가며
글로벌 팀에서 일하거나 오픈소스에 기여할 때, 코드 리뷰 영어는 필수 스킬입니다. 하지만 많은 한국 개발자가 "이걸 영어로 어떻게 말하지?"라는 고민에 빠집니다.
이 글에서는 상황별 코드 리뷰 영어 표현을 정리하고, 실제 PR 리뷰에서 바로 복사해서 쓸 수 있는 템플릿을 제공합니다.
1. 변경 요청 (Requesting Changes)
직접적 요청
# 명확한 변경 요청
- "Please rename this variable to something more descriptive."
- "This should be extracted into a separate function."
- "We need to add error handling here."
- "Please add a comment explaining why this is necessary."
- "This constant should be defined at the module level."
부드러운 요청 (더 선호됨)
# "I wonder..." 패턴 — 부드럽게 제안
- "I wonder if we could simplify this by using a list comprehension."
- "I wonder if this would be clearer as a named function."
# "What do you think about..." 패턴
- "What do you think about extracting this into a helper function?"
- "What do you think about using a dataclass here instead?"
# "Consider..." 패턴
- "Consider using `defaultdict` here to avoid the key check."
- "Consider adding a timeout to this HTTP call."
# "It might be worth..." 패턴
- "It might be worth adding a docstring to this class."
- "It might be worth caching this result since it's called frequently."
Nit (사소한 지적)
# 사소한 것은 "nit:" 접두사로 표시 (non-blocking)
- "nit: trailing whitespace on line 42"
- "nit: this could be a one-liner: `return x if x > 0 else 0`"
- "nit: inconsistent naming — other functions use snake_case"
- "nit: missing newline at end of file"
2. 질문하기 (Asking Questions)
의도/이유 묻기
# 왜 이렇게 했는지 물을 때
- "Could you explain why we need this check here?"
- "What's the reasoning behind using a raw SQL query instead of the ORM?"
- "Is there a specific reason for choosing `threading` over `asyncio`?"
- "I'm curious — why did you go with this approach?"
동작 확인
# 코드가 어떻게 동작하는지 확인할 때
- "What happens if `user` is None here?"
- "How does this behave when the list is empty?"
- "Does this handle the case where the API returns a 429?"
- "Will this work correctly with concurrent requests?"
테스트/엣지 케이스
# 테스트 관련 질문
- "Do we have test coverage for the error path?"
- "Have you considered adding a test for the edge case where input is empty?"
- "How was this tested? I couldn't find a corresponding test file."
- "Could you add a regression test for this fix?"
3. 칭찬하기 (Giving Praise)
# 구체적으로 칭찬하기 (구체적일수록 좋음)
- "Nice refactoring! This is much more readable now."
- "Great use of the Strategy pattern here."
- "Love the comprehensive error handling."
- "This is a really elegant solution. Well done!"
- "Excellent test coverage — especially the edge cases."
- "Good catch on that race condition!"
- "TIL about this API — thanks for introducing it!"
- "This abstraction is going to save us a lot of time."
4. 제안하기 (Making Suggestions)
대안 제시
# 코드와 함께 대안을 제시하는 예시
# 기존 코드:
# for item in items:
# if item.status == 'active':
# result.append(item.name)
# 리뷰 코멘트:
# "We could simplify this with a list comprehension:
# `result = [item.name for item in items if item.status == 'active']`"
# 대안 제시 표현들
- "An alternative approach would be to use..."
- "You might want to look into using X instead."
- "One option is to..., which would give us..."
- "Have you considered using X? It handles Y automatically."
- "A simpler way to achieve this would be..."
성능/안전성 관련
# 성능 이슈 지적
- "This creates a new list on every iteration. Consider moving it outside the loop."
- "This O(n²) approach might be slow for large datasets. A set-based lookup would be O(n)."
- "We should use `str.join()` instead of string concatenation in a loop."
# 안전성 이슈 지적
- "This looks like it could be vulnerable to SQL injection."
- "We should validate the input before passing it to the shell command."
- "This secret should not be hardcoded — let's use environment variables."
5. 승인하기 (Approving)
# LGTM (Looks Good To Me) 변형들
- "LGTM! 🚀"
- "LGTM — just one minor nit, but nothing blocking."
- "Looks good to me! Nice work."
- "Approved! Clean implementation."
- "LGTM with the suggested change. Feel free to merge after."
- "Ship it! 🛳️"
# 조건부 승인
- "LGTM once the test is added."
- "Approved with minor suggestions — up to you whether to address them."
- "Looks good overall. Just the one blocking comment about error handling."
6. 유용한 약어와 관용표현
# 코드 리뷰에서 자주 쓰이는 약어
LGTM = Looks Good To Me (승인)
PTAL = Please Take A Look (리뷰 요청)
WIP = Work In Progress (작업 중)
RFC = Request For Comments (의견 요청)
TIL = Today I Learned (오늘 배운 것)
IIRC = If I Remember/Recall Correctly (기억이 맞다면)
AFAIK = As Far As I Know (내가 알기로는)
IMO = In My Opinion (내 의견으로는)
IMHO = In My Humble Opinion (겸손한 의견으로는)
FYI = For Your Information (참고로)
WDYT = What Do You Think? (어떻게 생각해?)
ACK = Acknowledged (확인함)
NACK = Negative Acknowledgment (반대)
7. PR 설명 작성하기
PR Title 패턴
# Conventional Commits 스타일
feat: add user authentication via OAuth2
fix: resolve race condition in cache invalidation
refactor: extract payment logic into separate service
docs: update API documentation for v2 endpoints
perf: optimize database queries for user dashboard
test: add integration tests for payment flow
chore: upgrade dependencies to latest versions
PR Description 템플릿
## What
Brief description of what this PR does.
## Why
Explain the motivation. Link to issue/ticket if applicable.
## How
Describe the approach taken and any important design decisions.
## Testing
- [ ] Unit tests added/updated
- [ ] Integration tests pass
- [ ] Manual testing done (describe what was tested)
## Screenshots (if applicable)
Before / After screenshots for UI changes.
## Notes for Reviewers
Any specific areas where you'd like focused feedback.
8. 어려운 상황 대처하기
의견 충돌 시
# 정중하게 반대 의견 표현
- "I see your point, but I think X might be more appropriate here because..."
- "I respectfully disagree — here's my reasoning: ..."
- "That's a valid approach, but I have concerns about..."
- "I understand the trade-off. Let me explain why I went this route..."
이해가 안 될 때
# 솔직하게 모른다고 할 때
- "I'm not familiar with this pattern — could you point me to a reference?"
- "I'm not sure I understand this part. Could you walk me through it?"
- "This is a bit over my head. Can you add a comment explaining the logic?"
리뷰가 오래 걸릴 때
# 리뷰 지연에 대해
- "Sorry for the delayed review — I'll take a look today."
- "Apologies, this slipped through my notifications. Reviewing now."
- "I need a bit more time to review this thoroughly. ETA: tomorrow morning."
실전 연습: 리뷰 시나리오
시나리오 1: 에러 처리 미흡
# 리뷰 대상 코드:
def get_user(user_id):
response = requests.get(f"https://api.example.com/users/{user_id}")
return response.json()["data"]
# 좋은 리뷰 코멘트:
"What happens if the API returns a non-200 status code?
We should add error handling here. Something like:
response.raise_for_status() # Raises HTTPError for 4xx/5xx
Also, `response.json()["data"]` will raise a KeyError
if the response doesn't contain a "data" field.
Consider using `.get("data")` with a sensible default."
시나리오 2: 성능 이슈
# 리뷰 대상 코드:
def find_duplicates(items):
duplicates = []
for i in range(len(items)):
for j in range(i + 1, len(items)):
if items[i] == items[j] and items[i] not in duplicates:
duplicates.append(items[i])
return duplicates
# 좋은 리뷰 코멘트:
"This has O(n²) time complexity, which could be a problem
for large lists. Here's a more efficient approach using
Counter from collections:
from collections import Counter
def find_duplicates(items):
return [item for item, count in Counter(items).items() if count > 1]
This runs in O(n) time. WDYT?"
마무리
코드 리뷰는 코드 품질뿐 아니라 팀 커뮤니케이션의 핵심입니다. 핵심 원칙:
- 부드럽게 제안: "Consider..." / "What do you think about..." / "I wonder if..."
- 구체적으로 피드백: 코드 예시와 이유를 함께 제시
- 사소한 건 nit로 표시: Blocking vs non-blocking 구분
- 칭찬도 구체적으로: "Nice!" 보다 "Great use of the Strategy pattern"
- 약어 활용: LGTM, PTAL, nit 등으로 효율적 소통
📝 퀴즈 (8문제)
Q1. LGTM의 의미는? Looks Good To Me (승인)
Q2. "nit:" 접두사의 의미는? 사소한 지적으로, 수정하지 않아도 머지를 막지 않는(non-blocking) 코멘트
Q3. "What do you think about..." 패턴을 사용하는 이유는? 직접적인 명령보다 부드럽게 제안하여 건설적인 대화를 유도하기 위해
Q4. PTAL의 의미는? Please Take A Look (리뷰 요청)
Q5. PR Title에 "feat:", "fix:" 접두사를 붙이는 컨벤션 이름은? Conventional Commits
Q6. "I respectfully disagree"는 어떤 상황에서 사용하나? 리뷰어의 의견에 정중하게 반대할 때
Q7. SQL injection 취약점을 발견했을 때 적절한 영어 표현은? "This looks like it could be vulnerable to SQL injection."
Q8. WDYT의 의미는? What Do You Think? (어떻게 생각해?)
The Complete Guide to Code Review English — 100+ Practical Expressions for PR Reviews
- Introduction
- 1. Requesting Changes
- 2. Asking Questions
- 3. Giving Praise
- 4. Making Suggestions
- 5. Approving
- 6. Useful Abbreviations and Idioms
- 7. Writing PR Descriptions
- 8. Handling Difficult Situations
- Practical Exercises: Review Scenarios
- Conclusion
- Quiz

Introduction
When working on a global team or contributing to open source, code review English is an essential skill. Yet many Korean developers find themselves stuck thinking, "How do I say this in English?"
This post organizes English expressions for code reviews by situation, and provides templates you can copy and paste directly into real PR reviews.
1. Requesting Changes
Direct Requests
# Clear change requests
- "Please rename this variable to something more descriptive."
- "This should be extracted into a separate function."
- "We need to add error handling here."
- "Please add a comment explaining why this is necessary."
- "This constant should be defined at the module level."
Softer Requests (Preferred)
# "I wonder..." pattern — gentle suggestion
- "I wonder if we could simplify this by using a list comprehension."
- "I wonder if this would be clearer as a named function."
# "What do you think about..." pattern
- "What do you think about extracting this into a helper function?"
- "What do you think about using a dataclass here instead?"
# "Consider..." pattern
- "Consider using `defaultdict` here to avoid the key check."
- "Consider adding a timeout to this HTTP call."
# "It might be worth..." pattern
- "It might be worth adding a docstring to this class."
- "It might be worth caching this result since it's called frequently."
Nit (Minor Remarks)
# Indicate minor issues with "nit:" prefix (non-blocking)
- "nit: trailing whitespace on line 42"
- "nit: this could be a one-liner: `return x if x > 0 else 0`"
- "nit: inconsistent naming — other functions use snake_case"
- "nit: missing newline at end of file"
2. Asking Questions
Asking About Intent/Reasoning
# When asking why something was done a certain way
- "Could you explain why we need this check here?"
- "What's the reasoning behind using a raw SQL query instead of the ORM?"
- "Is there a specific reason for choosing `threading` over `asyncio`?"
- "I'm curious — why did you go with this approach?"
Verifying Behavior
# When checking how code behaves
- "What happens if `user` is None here?"
- "How does this behave when the list is empty?"
- "Does this handle the case where the API returns a 429?"
- "Will this work correctly with concurrent requests?"
Tests/Edge Cases
# Test-related questions
- "Do we have test coverage for the error path?"
- "Have you considered adding a test for the edge case where input is empty?"
- "How was this tested? I couldn't find a corresponding test file."
- "Could you add a regression test for this fix?"
3. Giving Praise
# Be specific with praise (the more specific, the better)
- "Nice refactoring! This is much more readable now."
- "Great use of the Strategy pattern here."
- "Love the comprehensive error handling."
- "This is a really elegant solution. Well done!"
- "Excellent test coverage — especially the edge cases."
- "Good catch on that race condition!"
- "TIL about this API — thanks for introducing it!"
- "This abstraction is going to save us a lot of time."
4. Making Suggestions
Offering Alternatives
# Example of presenting an alternative with code
# Existing code:
# for item in items:
# if item.status == 'active':
# result.append(item.name)
# Review comment:
# "We could simplify this with a list comprehension:
# `result = [item.name for item in items if item.status == 'active']`"
# Expressions for suggesting alternatives
- "An alternative approach would be to use..."
- "You might want to look into using X instead."
- "One option is to..., which would give us..."
- "Have you considered using X? It handles Y automatically."
- "A simpler way to achieve this would be..."
Performance/Safety Concerns
# Pointing out performance issues
- "This creates a new list on every iteration. Consider moving it outside the loop."
- "This O(n squared) approach might be slow for large datasets. A set-based lookup would be O(n)."
- "We should use `str.join()` instead of string concatenation in a loop."
# Pointing out safety issues
- "This looks like it could be vulnerable to SQL injection."
- "We should validate the input before passing it to the shell command."
- "This secret should not be hardcoded — let's use environment variables."
5. Approving
# LGTM (Looks Good To Me) variations
- "LGTM!"
- "LGTM — just one minor nit, but nothing blocking."
- "Looks good to me! Nice work."
- "Approved! Clean implementation."
- "LGTM with the suggested change. Feel free to merge after."
- "Ship it!"
# Conditional approval
- "LGTM once the test is added."
- "Approved with minor suggestions — up to you whether to address them."
- "Looks good overall. Just the one blocking comment about error handling."
6. Useful Abbreviations and Idioms
# Common abbreviations in code reviews
LGTM = Looks Good To Me (approval)
PTAL = Please Take A Look (review request)
WIP = Work In Progress (in progress)
RFC = Request For Comments (requesting feedback)
TIL = Today I Learned (something new)
IIRC = If I Remember/Recall Correctly (if I recall)
AFAIK = As Far As I Know (to my knowledge)
IMO = In My Opinion (in my opinion)
IMHO = In My Humble Opinion (in my humble opinion)
FYI = For Your Information (for reference)
WDYT = What Do You Think? (what do you think?)
ACK = Acknowledged (acknowledged)
NACK = Negative Acknowledgment (disagreement)
7. Writing PR Descriptions
PR Title Patterns
# Conventional Commits style
feat: add user authentication via OAuth2
fix: resolve race condition in cache invalidation
refactor: extract payment logic into separate service
docs: update API documentation for v2 endpoints
perf: optimize database queries for user dashboard
test: add integration tests for payment flow
chore: upgrade dependencies to latest versions
PR Description Template
## What
Brief description of what this PR does.
## Why
Explain the motivation. Link to issue/ticket if applicable.
## How
Describe the approach taken and any important design decisions.
## Testing
- [ ] Unit tests added/updated
- [ ] Integration tests pass
- [ ] Manual testing done (describe what was tested)
## Screenshots (if applicable)
Before / After screenshots for UI changes.
## Notes for Reviewers
Any specific areas where you'd like focused feedback.
8. Handling Difficult Situations
When Opinions Conflict
# Expressing disagreement politely
- "I see your point, but I think X might be more appropriate here because..."
- "I respectfully disagree — here's my reasoning: ..."
- "That's a valid approach, but I have concerns about..."
- "I understand the trade-off. Let me explain why I went this route..."
When You Don't Understand
# Being honest about not knowing
- "I'm not familiar with this pattern — could you point me to a reference?"
- "I'm not sure I understand this part. Could you walk me through it?"
- "This is a bit over my head. Can you add a comment explaining the logic?"
When a Review Is Taking Long
# About delayed reviews
- "Sorry for the delayed review — I'll take a look today."
- "Apologies, this slipped through my notifications. Reviewing now."
- "I need a bit more time to review this thoroughly. ETA: tomorrow morning."
Practical Exercises: Review Scenarios
Scenario 1: Insufficient Error Handling
# Code under review:
def get_user(user_id):
response = requests.get(f"https://api.example.com/users/{user_id}")
return response.json()["data"]
# Good review comment:
"What happens if the API returns a non-200 status code?
We should add error handling here. Something like:
response.raise_for_status() # Raises HTTPError for 4xx/5xx
Also, `response.json()["data"]` will raise a KeyError
if the response doesn't contain a "data" field.
Consider using `.get("data")` with a sensible default."
Scenario 2: Performance Issue
# Code under review:
def find_duplicates(items):
duplicates = []
for i in range(len(items)):
for j in range(i + 1, len(items)):
if items[i] == items[j] and items[i] not in duplicates:
duplicates.append(items[i])
return duplicates
# Good review comment:
"This has O(n squared) time complexity, which could be a problem
for large lists. Here's a more efficient approach using
Counter from collections:
from collections import Counter
def find_duplicates(items):
return [item for item, count in Counter(items).items() if count > 1]
This runs in O(n) time. WDYT?"
Conclusion
Code review is about more than code quality — it's a core part of team communication. Key principles:
- Suggest gently: "Consider..." / "What do you think about..." / "I wonder if..."
- Give specific feedback: Provide code examples and reasoning together
- Mark minor things as nit: Distinguish between blocking and non-blocking
- Be specific with praise too: "Great use of the Strategy pattern" rather than just "Nice!"
- Use abbreviations effectively: Communicate efficiently with LGTM, PTAL, nit, etc.
Quiz (8 Questions)
Q1. What does LGTM stand for? Looks Good To Me (approval)
Q2. What does the "nit:" prefix mean? It indicates a minor remark that is non-blocking — the merge won't be held up even if it's not addressed.
Q3. Why use the "What do you think about..." pattern? Because it's a softer way to suggest something compared to a direct command, fostering constructive dialogue.
Q4. What does PTAL stand for? Please Take A Look (review request)
Q5. What is the convention called that uses "feat:", "fix:" prefixes in PR titles? Conventional Commits
Q6. When would you use "I respectfully disagree"? When you want to politely express disagreement with a reviewer's opinion.
Q7. What is an appropriate English expression when you discover a SQL injection vulnerability? "This looks like it could be vulnerable to SQL injection."
Q8. What does WDYT stand for? What Do You Think?
Quiz
Q1: What is the main topic covered in "The Complete Guide to Code Review English — 100+
Practical Expressions for PR Reviews"?
A situational guide to frequently used English expressions in PR reviews. Covers change requests, praise, questions, and suggestions with real code review examples.
Q2: What is Requesting Changes?
Direct Requests Softer Requests (Preferred) Nit (Minor Remarks)
Q3: Explain the core concept of Asking Questions.
Asking About Intent/Reasoning Verifying Behavior Tests/Edge Cases
Q4: What are the key aspects of Making Suggestions?
Offering Alternatives Performance/Safety Concerns
Q5: How does Writing PR Descriptions work?
PR Title Patterns PR Description Template