Core Difference#
| Pronoun | Usage | Refers To | Example |
|---|
| which | non-defining clauses | things/ideas | The report, which I finished yesterday, is ready. |
| that | defining clauses | things/people | The report that I submitted has a bug. |
| whose | possession | people/things | The developer whose code broke the build… |
Key Concept: Defining vs Non-Defining Clauses#
Defining Clause (限定性从句)#
- Essential information (必要信息)
- No commas (不用逗号)
- Can use “that” (可以用 that)
- Cannot be removed (不能去掉)
Example:
1
2
3
4
| The server **that** crashed yesterday is back online.
(昨天崩溃的那个服务器已经恢复在线了)
❌ The server is back online. (Which server? Unclear!)
|
Non-Defining Clause (非限定性从句)#
- Extra information (额外信息)
- Must use commas (必须用逗号)
- Cannot use “that” (不能用 that)
- Can be removed (可以去掉)
Example:
1
2
3
4
| The AWS KMS service, **which** launched in 2012, is widely used.
(AWS KMS 服务于 2012 年推出,被广泛使用)
✅ The AWS KMS service is widely used. (Still clear!)
|
WHICH(用于事物/概念)#
Core Usage#
- Refers to things, ideas, or animals (指事物、概念或动物)
- Used in non-defining clauses (用于非限定性从句)
- Always with commas (总是用逗号)
Pattern#
1
| [Thing], which [clause], [rest of sentence].
|
Work Scenarios#
Technical Documentation#
1
2
3
4
5
6
7
8
| "The encryption algorithm, **which** was updated last year, is now more secure."
(去年更新的加密算法现在更安全了)
"The API, **which** supports both REST and GraphQL, is well-documented."
(同时支持 REST 和 GraphQL 的 API 文档很完善)
"The server, **which** runs on Linux, needs regular updates."
(运行在 Linux 上的服务器需要定期更新)
|
Project Updates#
1
2
3
4
5
6
7
8
| "The project, **which** started in January, is on schedule."
(一月份开始的项目按计划进行)
"The bug, **which** was discovered last week, has been fixed."
(上周发现的 Bug 已经修复)
"The migration, **which** took 3 months, was successful."
(耗时 3 个月的迁移成功了)
|
Daily Life Scenarios#
Describing Things#
1
2
3
4
5
6
7
8
| "My laptop, **which** I bought last year, is still working well."
(我去年买的笔记本还能正常工作)
"The restaurant, **which** opened recently, is very popular."
(最近开的餐厅很受欢迎)
"The book, **which** my friend recommended, is excellent."
(我朋友推荐的那本书很棒)
|
Key Rules#
✅ Correct:
1
| The report, **which** I finished yesterday, is ready.(非限定性,有逗号)
|
❌ Wrong:
1
2
| ❌ The report **which** I finished yesterday is ready.(非限定性从句必须有逗号)
❌ The report, **that** I finished yesterday, is ready.(非限定性从句不能用 that)
|
THAT(用于事物/人)#
Core Usage#
- Refers to things or people (指事物或人)
- Used in defining clauses (用于限定性从句)
- No commas (不用逗号)
- More common in speech (口语中更常用)
Pattern#
1
| [Thing/Person] that [clause] [rest of sentence].
|
Work Scenarios#
Identifying Specific Items#
1
2
3
4
5
6
7
8
| "The server **that** crashed yesterday is back online."
(昨天崩溃的那个服务器已经恢复在线了)
"The bug **that** we found in the code has been fixed."
(我们在代码中发现的那个 Bug 已经修复了)
"The developer **that** wrote this module left the team."
(写这个模块的那个开发者离开了团队)
|
Technical Specifications#
1
2
3
4
5
6
7
8
| "The algorithm **that** we use is AES-256."
(我们使用的算法是 AES-256)
"The server **that** handles authentication is down."
(处理认证的那个服务器宕机了)
"The feature **that** users requested most is now live."
(用户最要求的那个功能现在上线了)
|
Problem Solving#
1
2
3
4
5
6
7
8
| "The issue **that** caused the outage was a memory leak."
(导致宕机的那个问题是内存泄漏)
"The error **that** we saw yesterday happened again."
(我们昨天看到的那个错误又发生了)
"The fix **that** we deployed didn't work."
(我们部署的那个修复没有生效)
|
Daily Life Scenarios#
Identifying People/Things#
1
2
3
4
5
6
7
8
| "The book **that** I bought yesterday is great."
(我昨天买的那本书很棒)
"The person **that** called you is my colleague."
(给你打电话的那个人是我的同事)
"The movie **that** we watched last night was boring."
(我们昨晚看的那部电影很无聊)
|
Key Rules#
✅ Correct:
1
| The server **that** crashed yesterday is back online.(限定性,无逗号)
|
❌ Wrong:
1
| ❌ The server, **that** crashed yesterday, is back online.(限定性从句不能用逗号)
|
WHOSE(表示所属关系)#
Core Usage#
- Shows possession (表示所属关系)
- Can refer to people or things (可以指人或物)
- Works in both defining and non-defining clauses (限定性和非限定性都可以)
Pattern#
1
| [Person/Thing] whose [noun] [clause]
|
Work Scenarios#
People (People’s Possessions)#
1
2
3
4
5
6
7
8
| "The developer **whose** code broke the build needs to fix it."
(代码导致构建失败的那个开发者需要修复它)
"The team **whose** project won the award received a bonus."
(项目获奖的那个团队得到了奖金)
"The employee **whose** laptop was stolen reported it to IT."
(笔记本被盗的那个员工向 IT 部门报告了)
|
Technical Ownership#
1
2
3
4
5
6
7
8
| "The server **whose** certificate expired needs renewal."
(证书过期的那个服务器需要续期)
"The user **whose** account was locked contacted support."
(账户被锁定的那个用户联系了支持)
"The database **whose** backup failed was restored manually."
(备份失败的那个数据库被手动恢复了)
|
Responsibility#
1
2
3
4
5
| "The team **whose** feature is causing issues is investigating."
(功能导致问题的那个团队正在调查)
"The developer **whose** PR is blocking the release needs to respond."
( PR 阻塞发布的那个开发者需要回复)
|
Daily Life Scenarios#
People#
1
2
3
4
5
6
7
8
| "The student **whose** grades improved worked hard."
(成绩提高的那个学生学习很努力)
"The friend **whose** car broke down called for help."
(车坏了的那个朋友打电话求助)
"The neighbor **whose** dog barks all night is moving out."
(狗整晚叫的那个邻居要搬走了)
|
1
2
3
4
5
| "The company **whose** product we use is based in Seattle."
(我们使用其产品的那个公司总部在西雅图)
"The house **whose** roof was damaged needs repairs."
(屋顶损坏的那所房子需要修理)
|
Key Rules#
✅ Correct:
1
2
| The developer **whose** code broke the build...(限定性,无逗号)
My colleague, **whose** name is Alice, is on vacation.(非限定性,有逗号)
|
THAT vs WHICH: The Critical Decision#
Decision Tree#
1
2
3
4
5
6
| Is the information essential?
├─ YES: Use THAT (no commas) ✅
│ Example: The server **that** crashed is back online.
│
└─ NO: Use WHICH (with commas) ✅
Example: The server, **which** is in AWS, is back online.
|
Quick Test#
Test: Remove the clause. Is the sentence still clear?
- YES → Non-defining → Use WHICH + commas ✅
- NO → Defining → Use THAT (no commas) ✅
Example 1:
1
2
3
| "The server **that** crashed yesterday is back online."
→ Remove "that crashed yesterday": "The server is back online."
→ Which server? Unclear! → Defining → Use **THAT** ✅
|
Example 2:
1
2
3
| "The server, **which** runs Linux, is back online."
→ Remove "which runs Linux": "The server is back online."
→ Still clear! → Non-defining → Use **WHICH** + commas ✅
|
Common Mistakes#
Mistake 1: Using THAT with Commas#
❌ Wrong:
1
| The server, **that** crashed yesterday, is back online.
|
✅ Correct:
1
2
| The server **that** crashed yesterday is back online.
(限定性从句,不能用逗号)
|
Mistake 2: Using WHICH Without Commas in Non-Defining Clauses#
❌ Wrong:
1
| The server **which** crashed yesterday is back online.
|
✅ Correct:
1
2
| The server, **which** crashed yesterday, is back online.
(非限定性从句,必须有逗号)
|
OR (if defining):
1
2
| The server **that** crashed yesterday is back online.
(限定性从句,用 that)
|
Mistake 3: Confusing WHOSE with WHO’S#
Rule:
- whose = possession(所属关系)
- who’s = who is(缩写)
Examples:
❌ Wrong:
1
| The developer **who's** code broke the build...(错误:who's = who is)
|
✅ Correct:
1
| The developer **whose** code broke the build...(正确:whose = possession)
|
Test: Can you replace with “who is”?
- YES → Use who’s ✅
- NO → Use whose ✅
Mistake 4: Using WHOSE Only for People#
Rule: WHOSE can be used for both people and things (formal)
Examples:
People:
1
2
| The developer **whose** code broke the build...
(代码导致构建失败的开发者)
|
Things (formal):
1
2
3
4
5
| The server **whose** certificate expired...
(证书过期的服务器)
The company **whose** product we use...
(我们使用其产品的公司)
|
Scenario Examples#
Scenario 1: Technical Documentation#
Defining (Essential Info):
1
2
3
4
5
| "The encryption algorithm **that** we use is AES-256."
(我们使用的加密算法是 AES-256 - 指定了是哪一个)
"The API **that** handles authentication is down."
(处理认证的 API 宕机了 - 指定了是哪一个 API)
|
Non-Defining (Extra Info):
1
2
3
4
5
| "The encryption algorithm, **which** uses 256-bit keys, is secure."
(加密算法使用 256 位密钥,很安全 - 额外信息)
"The API, **which** was developed in-house, needs updates."
(API 是内部开发的,需要更新 - 额外信息)
|
Scenario 2: Bug Report#
Defining (Identifying Specific Bug):
1
2
3
4
5
| "The bug **that** caused the outage has been fixed."
(导致宕机的那个 Bug 已经修复)
"The error **that** we saw in the logs was a timeout."
(我们在日志中看到的那个错误是超时)
|
Non-Defining (Adding Context):
1
2
3
4
5
| "The bug, **which** was discovered last week, affected 5% of users."
(上周发现的 Bug 影响了 5% 的用户)
"The error, **which** was caused by a memory leak, has been resolved."
(由内存泄漏导致的错误已经解决)
|
Scenario 3: Team Management#
Defining (Identifying People):
1
2
3
4
5
| "The developer **whose** code broke the build needs to fix it."
(代码导致构建失败的那个开发者需要修复)
"The team **that** worked on the migration did a great job."
(做迁移的那个团队做得很棒)
|
Non-Defining (Adding Info):
1
2
3
4
5
| "The developer, **whose** name is Alice, is on vacation."
(名叫 Alice 的那个开发者在休假)
"The team, **which** consists of 5 engineers, is fully booked."
(由 5 名工程师组成的团队已经排满了)
|
Practice Exercises#
Exercise 1: Choose WHICH or THAT#
- The server ___ crashed yesterday is back online.
- The server, ___ runs on Linux, needs updates.
- The bug ___ we found is critical.
- The API, ___ was launched last year, is very popular.
- The feature ___ users requested most is now live.
Answers:
- that (defining - essential info)
- which (non-defining - extra info, has commas)
- that (defining - essential info)
- which (non-defining - extra info, has commas)
- that (defining - essential info)
Exercise 2: Add Commas Where Needed#
- The project which started in January is on schedule.
- The migration that took 3 months was successful.
- The server which is in AWS needs a security update.
- The bug that caused the outage has been fixed.
- The developer whose code broke the build is investigating.
Answers:
- The project, which started in January, is on schedule. (non-defining)
- The migration that took 3 months was successful. (defining - no commas)
- The server, which is in AWS, needs a security update. (non-defining)
- The bug that caused the outage has been fixed. (defining - no commas)
- The developer whose code broke the build is investigating. (defining - no commas)
Exercise 3: Identify the Error#
- ❌ “The server, that crashed, is back online.”
- ✅ “The server that crashed is back online.”
- ❌ “The developer who’s code broke the build…”
- ✅ “The developer whose code broke the build…”
- ❌ “The API which we use is GraphQL.” (if defining)
- ✅ “The API that we use is GraphQL.” (defining)
Memory Tricks#
THAT vs WHICH#
THAT:
- That = Tells How A Thing Truly Is (essential info)
- Think: “I need that specific one!”
- No commas = essential
WHICH:
- Which = With Helpful Information Connecting Here (extra info)
- Think: “By the way, which adds context”
- Commas = extra info
WHOSE#
WHOSE:
- Whose = Has Ownership Of Something Else
- Think: “Whose is it?”
- Test: Can replace with “who is”? NO → Use whose ✅
Quick Reference Summary#
| Pronoun | Clause Type | Punctuation | Refers To | Example |
|---|
| which | non-defining | commas required | things | The server, which is old, needs replacement. |
| that | defining | no commas | things/people | The server that crashed is back online. |
| whose | both | depends on clause type | people/things | The dev whose code broke… |
Decision Checklist#
1
2
3
4
5
6
7
8
9
10
| ✅ Is the information essential?
→ YES: Use THAT (no commas)
→ NO: Use WHICH (with commas)
✅ Does it show possession?
→ YES: Use WHOSE
✅ Does it refer to a person (as subject)?
→ YES: Can use WHO or THAT
→ NO (thing): Use WHICH or THAT
|
Summary#
Key Rules:
- THAT = essential info (defining), no commas
- WHICH = extra info (non-defining), with commas
- WHOSE = possession, works in both clause types
- Test: Remove clause → still clear? → Use WHICH + commas
Memory Trick:
- THAT defines (no commas)
- WHICH adds (with commas)
- WHOSE owns (possession)