JavaScript 程式設計最佳實踐

JavaScript 程式設計最佳實踐

本文將解釋 JavaScript 程式設計中的最佳實踐。

我們將介紹 JavaScript 的關鍵最佳實踐並提供具體的程式碼範例。

YouTube Video

JavaScript 程式設計最佳實踐

在程式設計中,不僅要寫出「能運作的程式碼」,更要寫出可維護、高效且可靠的程式碼。遵循「最佳實踐」能讓你的程式碼更容易被其他開發者理解,更容易維護與擴充,並最終減少錯誤、提升效能。

透過程式碼範例,一起來看看 JavaScript 的關鍵最佳實踐。

使用清晰且描述性的變數名稱和函式名稱

讓人僅透過閱讀程式碼就能理解變數或函式的意義。優先使用具描述性的名稱,而非縮寫或過於簡短的名稱。

不良範例

1/* Bad Example */
2let x = 10;
3function fn() {
4    // ...
5}
  • xfn 這樣的名稱會模糊程式碼的意圖。

良好範例

1/* Good Example */
2let totalItems = 10;
3function calculateDiscount(price) {
4    // ...
5}
  • 使用具意義的名稱,例如 totalItemscalculateDiscount,有助於讀者理解程式碼。

使用 const / let,避免 var

由於 var 容易引發作用域與重複宣告問題,建議一律使用 constlet

不良範例

1/* Bad Example */
2var count = 5;
  • var 為函式作用域,可能導致非預期的重複宣告與提升(hoisting)。

良好範例

1/* Good Example */
2let count = 5; // Reassignable
3const MAX_COUNT = 10; // Not reassignable
  • letconst 為區塊作用域,使用更安全,能帶來更可預期且穩定的程式碼。

使用適當的註解

{^ i18n_speak 単にコードの動作をそのまま繰り返すコメントではなく、コードの「目的」や「理由」を説明するためにコメントを使います。^}

不良範例

1/* Bad Example */
2let a = 100; // assign 100 to a

良好範例

1/* Good Example */
2// Initialize the maximum value to 100
3let maxItems = 100;
  • 註解應偏重解釋為什麼這麼做,而非只是描述做了什麼。在邏輯複雜之處尤其有用。

遵循 DRY(Don't Repeat Yourself)原則

不要重複相同邏輯,應將其抽取為函式或類別。減少重複可提升可維護性並有助於避免錯誤。

不良範例

1/* Bad Example */
2let totalPrice = price * quantity;
3let discountedPrice = (price * 0.9) * quantity;

良好範例

1/* Good Example */
2function calculatePrice(price, quantity, discount = 0) {
3    return (price * (1 - discount)) * quantity;
4}
5
6let totalPrice = calculatePrice(price, quantity);
7let discountedPrice = calculatePrice(price, quantity, 0.1);
  • 將重複的邏輯整合到一個函式中,之後的變更與修正即可在單一處進行。在大規模開發中尤為重要。

讓函式保持單一職責並將副作用降到最低

每個函式都應有一個明確的目的。避免改變全域或外部狀態,以將副作用降到最低。

不良範例

1/* Bad Example */
2let total = 0;
3function addItem(price) {
4    total += price; // modifies external state
5    console.log('Item added');
6}

良好範例

1/* Good Example */
2function calculateTotal(items) {
3    return items.reduce((sum, item) => sum + item.price, 0);
4}
  • 將函式設計為純函式(相同輸入必定回傳相同結果)可使其更易於測試且更可靠。這也能提升可重用性與除錯的便利性。

執行錯誤處理

確保應用程式不會因為非預期的輸入或例外而崩潰。使用 try...catch 語法來妥善處理錯誤。

不良範例

1/* Bad Example */
2let data = JSON.parse(inputData);

良好範例

1/* Good Example */
2try {
3    let data = JSON.parse(inputData);
4} catch (error) {
5    console.error('Failed to parse JSON:', error);
6}
  • 由於 JSON.parse() 可能拋出例外,請用 try-catch 安全處理。完善的錯誤處理有助於打造健壯的應用程式。

產生結構化日誌

以一致的格式輸出日誌,便於追蹤系統行為。使用 JSON 格式的日誌,有助於在分析與監控工具中處理。

不良範例

1/* Bad Example */
2console.log('Error occurred!');

良好範例

1/* Good Example */
2console.log(JSON.stringify({
3    level: 'error',
4    message: 'Database connection failed',
5    timestamp: new Date().toISOString()
6}));
  • 純文字日誌可能遺失資訊;結構化日誌能讓日誌分析、視覺化與監控變得更容易。這在伺服器端 JavaScript(Node.js)中特別有效。

提升程式碼可讀性

程式碼會被他人(或未來的你)閱讀。使用適當的縮排、換行與空白,使程式碼易於閱讀。

不良範例

1/* Bad Example */
2if(a===b){doSomething();}

良好範例

1/* Good Example */
2if (a === b) {
3    doSomething();
4}
  • 格式良好、可讀性高的程式碼更容易理解,也更容易發現錯誤。不要把所有東西擠在同一行;讓結構在視覺上清晰可辨。

務必重視安全性

由於 JavaScript 經常在網頁環境中執行,安全意識至關重要。務必驗證使用者輸入、防範 XSS 與 CSRF,並保持相依套件為最新。

不良範例

1/* Bad Example */
2// Directly inserting user input into HTML (vulnerable to XSS)
3element.innerHTML = userInput;

良好範例

1/* Good Example */
2// Use textContent to prevent XSS attacks
3element.textContent = userInput;
  • 直接使用未處理的使用者輸入,可能引入如腳本注入等漏洞。使用安全的 API,並養成永遠驗證與淨化資料的習慣。

執行程式碼測試

導入自動化測試能更容易偵測並預防錯誤。在 JavaScript 中,常用的測試框架有 Jest 與 Mocha。

範例

1// Simple test using Jest
2function sum(a, b) {
3    return a + b;
4}
5
6test('adds 1 + 2 to equal 3', () => {
7    expect(sum(1, 2)).toBe(3);
8});
  • 具備測試可確保在新增功能或變更時不會讓錯誤死灰復燃。測試是持續品質保證不可或缺的一環。

結論

遵循最佳實踐能大幅提升程式碼的品質、可維護性與可靠性。在學習 JavaScript 時,不僅要學語法,更要養成「如何寫出好程式碼」的習慣。持續學習可讓你的程式碼更易讀、更安全且更高效。

您可以在我們的 YouTube 頻道上使用 Visual Studio Code 來跟隨上述文章一起學習。 請也查看我們的 YouTube 頻道。

YouTube Video