# 冗餘效應 redundancy effect

## 概念

一樣的訊息重複的出現，佔用了工作記憶，對於學習造成了干擾的現象。

以教材為例，當文字與語音的內容完全相同時，一樣的訊息額外的佔用了工作記憶，就會有出現冗餘的現象。

## 範例一

這個例子是一段關於課程管理相關的程式，course物件有courseName, courseHours, courseTeacher的屬性。在getCourseName function中會回傳course.courseName，我們可以發現這裡有冗餘效應的現象 因為course內的屬性，都會有course冗餘的字出現。

#### 優化前之課程管理程式碼

```javascript
const course = {
  courseName: '應用心理學理論提升程式碼可讀性',
  courseHours: 3,
  courseTeacher: 'Jim',
}

function getCourseName() {
  return course.courseName;
}
```

因此我們可以將程式碼優化，把course內的屬性冗餘的文字去除。這樣getCourseName function中的程式碼就會簡潔許多 避免了冗餘效應的發生。

#### 優化後之課程管理程式碼

```javascript
const course = {
  name: '應用心理學理論提升程式碼可讀性',
  hours: 3,
  teacher: 'Jim',
}

function getCourseName() {
  return course.name;
}
```

## 範例二

程式碼有時會因為需求的改變而進行改寫，有些人便會將舊的程式碼註解，方便未來可能需要還原程式碼。

久而久之，這些註解的程式碼就會占用許多空間，而其他工程師看到這些註解的程式碼，也不敢隨意刪除。導致冗餘的程式碼的註解越來越多，這會對閱讀程式碼產生認知負荷。

因此如果真的有需求，需要還原舊版的程式碼，那我們應該要善用版本控管的工具，取代註解程式碼的習慣。

#### 優化前之程式碼

```javascript
/*
function foo() {
  // do something
}
*/
function foo() {
  // do something
}

foo();
```

#### 優化後之程式碼

```javascript
function foo() {
  // do something
}

foo();
```

## 範例三

這是一段取得三個數字之統計值的function，function中的註解解釋了每一行計算代表的含意。

註解非常詳盡，但有些程式碼本身不需要註解就已經可以很好理解。

因此那些過於簡單的註解，會造成冗餘效應的現象。

在優化後的程式碼去除了非必要的註解，只在較為複雜的計算寫上註解，是不是看起來就簡約好讀了許多呢！

#### 優化前之程式碼

```javascript
function getStats(num1, num2, num3) {
  // 個數
  const n = 3;
  // 加總
  const sum = num1 + num2 + num3;
  // 平均值
  const mean = sum / n;
  // 方均值
  const meanSquare = (num1 * num1 + num2 * num2 + num3 * num3) / n;
  // 方均根值
  const rootMeanSquair = Math.pow(meanSquare, .5);
  return {
    sum,
    mean,
    meanSquare,
    rootMeanSquair,
  }
}
```

#### 優化後之程式碼

```javascript
function getStats(num1, num2, num3) {
  const n = 3;
  const sum = num1 + num2 + num3;
  const mean = sum / n;
  
  // 方均值
  const meanSquare = (num1 * num1 + num2 * num2 + num3 * num3) / n;
  // 方均根值
  const rootMeanSquair = Math.pow(meanSquare, .5);
  return {
    sum,
    mean,
    meanSquare,
    rootMeanSquair,
  }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://huang-guo-jun.gitbook.io/ying-yong-xin-li-xue-ti-sheng-cheng-shi-ma-ke-du-xing/she-ji-yuan-ze-yu-xiao-ying/rong-yu-xiao-ying-redundancy-effect.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
