Core Difference

PronounUsageRefers ToExample
whichnon-defining clausesthings/ideasThe report, which I finished yesterday, is ready.
thatdefining clausesthings/peopleThe report that I submitted has a bug.
whosepossessionpeople/thingsThe 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."
(狗整晚叫的那个邻居要搬走了)

Things (Formal)

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

  1. The server ___ crashed yesterday is back online.
  2. The server, ___ runs on Linux, needs updates.
  3. The bug ___ we found is critical.
  4. The API, ___ was launched last year, is very popular.
  5. The feature ___ users requested most is now live.

Answers:

  1. that (defining - essential info)
  2. which (non-defining - extra info, has commas)
  3. that (defining - essential info)
  4. which (non-defining - extra info, has commas)
  5. that (defining - essential info)

Exercise 2: Add Commas Where Needed

  1. The project which started in January is on schedule.
  2. The migration that took 3 months was successful.
  3. The server which is in AWS needs a security update.
  4. The bug that caused the outage has been fixed.
  5. The developer whose code broke the build is investigating.

Answers:

  1. The project, which started in January, is on schedule. (non-defining)
  2. The migration that took 3 months was successful. (defining - no commas)
  3. The server, which is in AWS, needs a security update. (non-defining)
  4. The bug that caused the outage has been fixed. (defining - no commas)
  5. The developer whose code broke the build is investigating. (defining - no commas)

Exercise 3: Identify the Error

  1. ❌ “The server, that crashed, is back online.”
  2. ✅ “The server that crashed is back online.”
  3. ❌ “The developer who’s code broke the build…”
  4. ✅ “The developer whose code broke the build…”
  5. ❌ “The API which we use is GraphQL.” (if defining)
  6. ✅ “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

PronounClause TypePunctuationRefers ToExample
whichnon-definingcommas requiredthingsThe server, which is old, needs replacement.
thatdefiningno commasthings/peopleThe server that crashed is back online.
whosebothdepends on clause typepeople/thingsThe 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:

  1. THAT = essential info (defining), no commas
  2. WHICH = extra info (non-defining), with commas
  3. WHOSE = possession, works in both clause types
  4. Test: Remove clause → still clear? → Use WHICH + commas

Memory Trick:

  • THAT defines (no commas)
  • WHICH adds (with commas)
  • WHOSE owns (possession)