🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

前言

AI時代的程式碼閱讀,從掌握英單字的語感開始。

程式語言是用英語寫成的 “規則手冊”。
變數、函數、類別、註解──一切都延伸自英語。

掌握「文法」不僅僅是「單字的意義」,即使在不熟悉的語言的程式碼中也能“大致了解它在做什麼”

例如...

users = database.get_all_users()
active_users = filter.remove_inactive(users)
email.send_notification(active_users)

<details> <summary>查看答案</summary>

「從資料庫獲取所有用戶,排除非活躍用戶,並發送通知」

【關鍵字】

  • get_all_users = 獲取所有用戶
  • remove_inactive = 剔除非活躍
  • send_notification = 發送通知
  • filter = 過濾
  • active_users = 活躍用戶
    </details>

如果可以流利地讀懂這三行,你的英語能力已經達到工程師級別!?也許...

為什麼要將其記住為「英單字」?

工程師並不僅僅處理一種語言

JavaScript、PHP、Python、Java、C#、Go... 在多種語言之間來回穿梭的時代,使得理解「程式碼的文法」和理解「英單字的意義」同等重要。

更何況,AI時代已經到來。當閱讀由 ChatGPT 或 Copilot 寫的程式碼時,如果理解英單字的意義...

  • validate → 「哦,這是在檢查輸入」
  • fetch → 「是在獲取數據」
  • filter → 「僅僅提取符合條件的部分」

那麼,不論語言如何,都能瞬間理解其意圖。

更實際的例子...

  • user.save() → 「正在保存用戶信息」
  • cache.clear() → 「正在清除緩存」
  • password.encrypt() → 「正在加密密碼」
  • database.connect() → 「正在連接資料庫」

如果懂得英語,即使是第一次看到的程式碼也能發現“它在做什麼!”

英單字是程式設計的通用語

這次,我故意不針對特定語言,而是從基礎到稍微難一點的單字,進行了「片假名讀音 + 意義 + 使用方法」的整理。

如果能將英單字記住為「單字」,那麼無論什麼語言的程式碼都能讀懂。
總體來說能夠「理解它在做什麼」,而這種“大致的理解”在實務中能大大助益。

1. 常用的條件和控制英單字

控制程式流程的基本英單字。簡單的 if 陳述式、迴圈、非同步處理等,無論何種語言都必然出現的必需單字。

英單字 片假名讀音 意義 使用方式
if イフ 如果〜則 if (x > 0)
else エルス 否則 else { ... }
break ブレイク 中斷 break;
continue コンティニュー 繼續 continue;
return リターン 返回值 return value;
yield※ イールド 產生/讓渡 yield return item;
iterator イテレータ 反覆子 for item in iterator:
await アウェイト (等待非同步處理) await FetchDataAsync()
switch スイッチ 分支 switch (value)
case ケース 情況 case 1:
default デフォルト 預設值 default:

<details><summary>※ yield 的補充</summary>

💡如評論中所指出,yield 根據上下文意義會稍有不同。

  • 「產生/給予」(如 JavaScript 的生成器函數等)
    yield:給予下一個值
    yield*:將控制權委譲給另一個生成器

  • 「讓渡」(如 Java 的線程控制等)
    Thread#yield():讓渡 CPU 執行權給其他線程

兩者均代表「暫時放棄自己的處理並將控制權傳遞給下個主體」。 即 yield 的語感涵蓋了“給予”與“讓渡”的“傳遞”概念。
根據語言不同,「傳遞值」或「讓渡處理」的意義也有所不同,這正是這個單字有趣之處!
</details>

⭐ 小知識

  • yield 是「產生」,因此迭代工具會 "逐步返回"
  • iterator 是「重複的東西」,用於逐一取出元素
  • await 是直接用英語動詞 await(等待)作為關鍵字。

⭐ 實際程式碼例

// 使用 yield 的範例
function* generateNumbers() {
    yield 1;  // 產生 1 並暫停
    yield 2;  // 產生 2 並暫停
    yield 3;  // 產生 3 並結束
}

// 使用 await 的非同步處理範例
async function fetchUserData() {
    const response = await fetch('/api/users');  // 等待回應
    const data = await response.json();          // 等待 JSON 轉換
    return data;
}

2. 類別和物件導向中出現的單字

物件導向程式設計的核心英單字。類別設計、繼承、介面實作等,設計場景必然會遇到的重要概念,記住這些英單字會非常方便。

英單字 片假名讀音 意義 使用方式
class クラス 設計藍本 class User { }
interface インターフェース 接口/契約 interface IShape
abstract アブストラクト 抽象的 abstract class BaseClass
override オーバーライド 覆蓋 override void Run()
virtual バーチャル 虛擬的 virtual void Run()
implement インプリメント 實作 class User : IUser
inherit インヘリット 繼承 class B : A
encapsulate エンカプスレート 封裝 透過 private 或 getter/setter 實現
constructor コンストラクター 建構子 public User() { }
destructor デストラクター 銷毀子 ~User() { }

⭐ 稍微難一點的

  • encapsulate(エンカプスレート)源自「封入到膠囊中」的意義 → 是不直接操作數據的設計
  • abstract不僅為「抽象」,還指「沒有實作的架構」

⭐ 實際程式碼例

// abstract 和 override 的範例
public abstract class Animal {
    public abstract void MakeSound();  // 抽象方法(無實作)
}

public class Dog : Animal {
    public override void MakeSound() {  // 覆蓋以提供實作
        Console.WriteLine("Woof!");
    }
}

// 封裝的範例
public class BankAccount {
    private decimal balance;  // 被封裝的數據

    public decimal GetBalance() {  // 透過 getter 安全訪問
        return balance;
    }

    public void Deposit(decimal amount) {  // 透過 setter 驗證且更新
        if (amount > 0) {
            balance += amount;
        }
    }
}

3. 數據操作與處理的英單字

數據庫操作、API 交互、JSON 處理等,處理數據時經常出現的動詞。從 CRUD 操作的基本到像序列化這樣一些稍微高級的處理均包括在內。

英單字 片假名讀音 意義 使用方式
get ゲット 獲取 GetValue()
set セット 設定 SetValue()
create クリエイト 創建 CreateUser()
read リード 讀取 ReadFile()
update アップデート 更新 UpdateRecord()
delete デリート 刪除 DeleteItem()
fetch フェッチ 提取 fetch("/api")
parse パース 解析 int.Parse("123")
serialize シリアライズ 直列化 JsonSerializer.Serialize()
deserialize デシリアライズ 復原 JsonSerializer.Deserialize()
validate※ バリデート 驗證/使有效 ValidateInput()
sanitize サニタイズ 無害化 SanitizeHtml()

<details><summary>※ validate 的補充 </summary>

💡如評論中所指出,validate 在不同語境下可以有「使有效」、「驗證」等不同含義。

  • Win32 系 API 等:validate ⇄ invalidate(使有效/無效)
  • Web/表單等:validate input(驗證輸入的有效性)
  • verify:確認結果或真偽

同一單字在不同技術領域中的意涵不同,這也是英語的有趣之處!
</details>

⭐ 「序列化」是難讀單字排行榜常客!?

「セリアライズ」容易誤讀,正確發音應該是 "シリアライズ"
其源自英語的 serial(連續的)。

⭐ 實際程式碼例

import json

# 序列化的範例
user_data = {
    "id": 1,
    "name": "Alice",
    "email": "[email protected]"
}

# 將物件直列化為 JSON 字串
serialized = json.dumps(user_data)
print(serialized)  # '{"id": 1, "name": "Alice", ...}'

# 反序列化的範例
# 將 JSON 字串恢復為物件
deserialized = json.loads(serialized)
print(deserialized['name'])  # 'Alice'

# validate 和 sanitize 的範例
def validate_email(email):
    # 驗證電子郵件地址
    return '@' in email and '.' in email

def sanitize_input(text):
    # 除去 HTML 標籤以實現無害化
    return text.replace('<', '&lt;').replace('>', '&gt;')

4. 通信、網絡及 Web 相關的英單字

在 Web 開發或 API 開發中必遭遇的通信相關術語。從 HTTP 請求/回應到認證令牌,現代 Web 開發無法缺少的單字已被匯集。

英單字 片假名讀音 意義 使用方式
request リクエスト 請求 HttpRequest
response レスポンス 回應 HttpResponse
header ヘッダー 通信信息部分 request.Headers
payload ペイロード 真實數據部分 JSON 主體等
endpoint エンドポイント 目標 URL api/v1/users
token トークン 認證用的密鑰 Bearer token
session セッション 暫時的通信狀態 Session.Start()
cookie クッキー 存儲在瀏覽器的數據 document.cookie
authentication オーセンティケーション 認證(身份確認) Login()
authorization オーソライゼーション 授權(可執行的操作) CheckPermission()

⭐ 工程師常見問題

  • payload 是「數據的實體」。「load」是「載荷」的意思
  • endpoint 是「通信的終點」。即為 API 的「口」

⭐ 實際程式碼例

// authentication 和 authorization 的差異
async function handleRequest(req, res) {
    // Authentication: 確認用戶身份
    const user = await authenticate(req.headers.token);
    if (!user) {
        return res.status(401).json({ error: "Unauthorized" });
    }

    // Authorization: 確認用戶的權限
    const hasPermission = authorize(user, 'admin');
    if (!hasPermission) {
        return res.status(403).json({ error: "Forbidden" });
    }

    // 返回包括 payload 的回應
    const payload = {
        data: await fetchAdminData(),
        timestamp: Date.now()
    };

    res.status(200).json(payload);
}

5. 設計與架構相關

用於軟體設計或設計模式的專業術語。依賴注入(DI)、倉儲模式等,是實現乾淨架構的重要概念的單字群。

英單字 片假名讀音 意義 使用方式
dependency ディペンデンシー 依賴關係 Dependency Injection
injection インジェクション 注入 DI Container
repository リポジトリ 儲存庫 UserRepository
service サービス 功能的集合 UserService
middleware ミドルウェア 中間層軟體 Web 伺服器等
delegate デリゲート 委託 在事件處理中使用
observer オブザーバー 監視者(模式名稱) Observer Pattern
singleton シングルトン 唯一實例 Singleton.Instance
factory ファクトリー 生成工廠 UserFactory.Create()
adapter アダプター 轉換器 DbAdapter

⭐ 抽象術語越來越重要

  • delegate 是「委託」,意即事件的處理者
  • singleton 是 "single(單一) + ton(物件)" → 唯一存在

⭐ 實際程式碼例

// 依賴注入的實例
public interface IUserRepository {
    User GetById(int id);
}

public class UserRepository : IUserRepository {
    public User GetById(int id) {
        // 從資料庫獲取用戶
        return database.Users.Find(id);
    }
}

public class UserService {
    private readonly IUserRepository _repository;  // 依賴

    // 在建構子中進行注入
    public UserService(IUserRepository repository) {
        _repository = repository;
    }

    public User GetUserDetails(int id) {
        return _repository.GetById(id);
    }
}

// 單例模式的實例
public class DatabaseConnection {
    private static DatabaseConnection _instance;

    private DatabaseConnection() { }  // 私有建構子

    public static DatabaseConnection Instance {
        get {
            if (_instance == null) {
                _instance = new DatabaseConnection();
            }
            return _instance;  // 總是返回相同的實例
        }
    }
}

6. 難懂但應該知道的英單字集

成為工程師時無法避免的專業術語。並行處理、非同步處理、資料庫設計等,理解系統深層部分所需的一些較難英單字。

英單字 片假名讀音 意義 備註
hierarchy ヒエラルキー 階層結構 如 class 或 UI 階層
asynchronous アシンクロナス 非同步 async / await
synchronous シンクロナス 同步的 處理的順序固定
concurrent コンカレント 並行的 用於線程處理
thread スレッド 並行處理單位 Thread.Start()
mutex ミューテックス 互斥 Mutex.Lock()
lock ロック 排他控制 lock(obj)
volatile ヴォラタイル 變動的 C# 變數修飾子
immutable イミュータブル 不可變的 const, readonly
mutable ミュータブル 可變的 一般變數
opaque オペーク 不透明的 意思是“無法透視的”
schema スキーマ 結構定義 常用於 DB 或 XML
polymorphism ポリモーフィズム 多態性 物件導向的核心
instantiate インスタンシエイト 實體化 new User()
initialize イニシャライズ 初始化 Init()

⭐ 高級單字的記憶方法

  • concurrent 是「同時運行」
  • volatile 是「揮發性(容易變動)」
  • polymorphism 是 "poly(多樣)" + "morph(形狀)" → 多樣的形狀=多態性
  • immutable 是 "im(否定)" + "mutable(可變)" → 不可變

⭐ 實際程式碼例

// immutable 和 mutable 的差異
public class ImmutablePoint {
    private final int x;  // immutable(不可變)
    private final int y;

    public ImmutablePoint(int x, int y) {
        this.x = x;
        this.y = y;
    }

    // 返回一個新的實例(不改變原有物件)
    public ImmutablePoint move(int dx, int dy) {
        return new ImmutablePoint(x + dx, y + dy);
    }
}

// 多態性的實例
interface Shape {
    double calculateArea();
}

class Circle implements Shape {
    private double radius;

    public double calculateArea() {
        return Math.PI * radius * radius;
    }
}

class Rectangle implements Shape {
    private double width, height;

    public double calculateArea() {
        return width * height;
    }
}

// 使用相同介面但實作不同
Shape shape1 = new Circle();
Shape shape2 = new Rectangle();
double area1 = shape1.calculateArea();  // 計算圓的面積
double area2 = shape2.calculateArea();  // 計算矩形的面積

7. 常見錯誤和易混淆的英單字

這是一些相似但意義不同的工程師常混淆的單字對。

易混對比 正確的區分
initialize vs instantiate initialize = 初始化(設置值)<br>instantiate = 實體化(使用 new 創造物件)
parameter vs argument parameter = 假參數(函數定義側)<br>argument = 實參數(函數調用側)
authentication vs authorization authentication = 認證(確認身份)<br>authorization = 授權(確認可做之事)
synchronous vs asynchronous synchronous = 同步(順序處理)<br>asynchronous = 非同步(不需等待的處理)
compile vs build compile = 編譯(源碼到物件碼)<br>build = 建置(編譯 + 連結 + 封裝)
method vs function method = 方法(屬於類別的函數)<br>function = 函數(獨立的處理單位)
library vs framework library = 庫(被調用使用)<br>framework = 框架(反轉控制,遵循框架結構)

⭐ 實際程式碼例

// parameter(假參數)和 argument(實參數)的差異
function greet(name) {  // 'name' 是 parameter(假參數)
    console.log(`Hello, ${name}!`);
}

greet("Alice");  // "Alice" 是 argument(實參數)

// initialize 和 instantiate 的差異
class User {
    constructor(name) {
        this.name = name;
        this.age = 0;
    }

    initialize(age, email) {
        this.age = age;      // initialize: 設值
        this.email = email;
    }
}

const user = new User("Bob");  // instantiate: 實體化
user.initialize(25, "[email protected]");  // initialize: 初始設值

8. 用英語的「語感」來進行閱讀練習

實際代碼由英語動詞和名詞構成的故事。掌握英語的語感,你會自然理解程式碼的意圖。

try {
    var repo = new UserRepository();
    repo.Initialize();
    var users = await repo.FetchAsync();
} catch (Exception ex) {
    Logger.Handle(ex);
} finally {
    Console.WriteLine("Done.");
}

用英語進行閱讀的感覺是這樣的!

「用戶儲存庫被實體化(instantiate),
進行初始化(initialize),
並以非同步方式獲取(fetch asynchronously)用戶,
若失敗則處理(handle),
最後顯示完成。」

※程式碼就像是英語動詞與名詞共同編織的故事。

9. 練習問題:試著用英語解釋這段代碼的意義

閱讀下面的代碼,看看能不能通過單字的意義來解釋其功能。

【問題1】 基礎級別

def validate_and_sanitize(input_data):
    if not validate(input_data):
        return None
    return sanitize(input_data)

<details>
<summary>查看答案</summary>
「檢查輸入數據的有效性,若無效則返回 None,有效則返回經過無害化處理的數據」
【關鍵字】

  • validate = 驗證
  • sanitize = 清洗
    </details>

【問題2】 中級級別

class EventEmitter {
    constructor() {
        this.listeners = {};
    }

    subscribe(event, callback) {
        if (!this.listeners[event]) {
            this.listeners[event] = [];
        }
        this.listeners[event].push(callback);
    }

    emit(event, data) {
        if (this.listeners[event]) {
            this.listeners[event].forEach(callback => callback(data));
        }
    }
}

<details>
<summary>查看答案</summary>
「事件發射器類,其中訂閱(subscribe)方法用於註冊事件和回調,發射(emit)方法用於執行所有註冊的回調」
【關鍵字】

  • subscribe = 訂閱
  • emit = 發射
  • listener = 監聽者
  • callback = 回調函數
    </details>

【問題3】 高級級別

public class Repository<T> where T : class {
    private readonly DbContext _context;

    public async Task<T> GetByIdAsync(int id) {
        return await _context.Set<T>().FindAsync(id);
    }

    public async Task<IEnumerable<T>> GetAllAsync() {
        return await _context.Set<T>().ToListAsync();
    }

    public async Task CommitAsync() {
        await _context.SaveChangesAsync();
    }
}

<details>
<summary>查看答案</summary>
「通過使用泛型倉庫(repository)模式提供功能,能夠非同步(asynchronously)獲取實體根據 ID、獲取所有實體、並進行變更的提交(commit)」
【關鍵字】

  • repository = 倉庫
  • asynchronous = 非同步的
  • commit = 提交
  • generic = 泛型的(<T>部分)
    </details>

總結

類別 英單字例 感覺上的意義
條件和控制 if / else / yield / await 條件/中斷/生成/等待
物件導向 abstract / override / implement 抽象/覆蓋/實作
數據處理 serialize / parse / fetch 直列化/解析/獲取
通信 request / payload / token 請求/實體/認證
設計 repository / delegate / dependency 儲存/委託/依賴
高級概念 asynchronous / concurrent / polymorphism 非同步/並行/多態性

🔹 "能讀"是"能理解"的第一步。

程式碼閱讀,從掌握英單字的語感開始。

末尾

對於工程師來說,英語是一種「如同母語的工具」,而不是「外語」。

不要讓不會的單字成為阻礙,將其意義、語源和用法學會一兩個,就可以"了解程式碼想做什麼"

記住英單字是理解程式碼的最短路徑!

這麼說或許會讓一些「我不擅長英語」的人感到困惑,但其實「程式設計中使用的英語並沒有你想的那麼多!」更不必強求你必須全部都懂,及時查找也是可以的。只要把經常出現的單字記住,理解度就能有顯著提升!

特別是在 AI 時代,迅速理解 ChatGPT 或 Copilot 生成的程式碼,並能適當把握與修正(同義於請求 AI)是越來越重要的。學會本文中的單字,或許會略微提高你的代碼閱讀能力...?


※本文是基於作者的個人經驗與解釋而成。
原來還有這種想法啊」的心情來閱讀即可。

※也非常歡迎編輯請求!!


原文出處:https://qiita.com/Sakai_path/items/b11badaa8daff2984f8d


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝13   💬4   ❤️4
434
🥈
我愛JS
📝1   💬3   ❤️2
46
🥉
酷豪
1
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付