概念
一樣的訊息重複的出現,佔用了工作記憶,對於學習造成了干擾的現象。
以教材為例,當文字與語音的內容完全相同時,一樣的訊息額外的佔用了工作記憶,就會有出現冗餘的現象。
範例一
這個例子是一段關於課程管理相關的程式,course物件有courseName, courseHours, courseTeacher的屬性。在getCourseName function中會回傳course.courseName,我們可以發現這裡有冗餘效應的現象 因為course內的屬性,都會有course冗餘的字出現。
優化前之課程管理程式碼
const course = {
courseName: '應用心理學理論提升程式碼可讀性',
courseHours: 3,
courseTeacher: 'Jim',
}
function getCourseName() {
return course.courseName;
}
因此我們可以將程式碼優化,把course內的屬性冗餘的文字去除。這樣getCourseName function中的程式碼就會簡潔許多 避免了冗餘效應的發生。
優化後之課程管理程式碼
const course = {
name: '應用心理學理論提升程式碼可讀性',
hours: 3,
teacher: 'Jim',
}
function getCourseName() {
return course.name;
}
範例二
程式碼有時會因為需求的改變而進行改寫,有些人便會將舊的程式碼註解,方便未來可能需要還原程式碼。
久而久之,這些註解的程式碼就會占用許多空間,而其他工程師看到這些註解的程式碼,也不敢隨意刪除。導致冗餘的程式碼的註解越來越多,這會對閱讀程式碼產生認知負荷。
因此如果真的有需求,需要還原舊版的程式碼,那我們應該要善用版本控管的工具,取代註解程式碼的習慣。
優化前之程式碼
/*
function foo() {
// do something
}
*/
function foo() {
// do something
}
foo();
優化後之程式碼
function foo() {
// do something
}
foo();
範例三
這是一段取得三個數字之統計值的function,function中的註解解釋了每一行計算代表的含意。
註解非常詳盡,但有些程式碼本身不需要註解就已經可以很好理解。
因此那些過於簡單的註解,會造成冗餘效應的現象。
在優化後的程式碼去除了非必要的註解,只在較為複雜的計算寫上註解,是不是看起來就簡約好讀了許多呢!
優化前之程式碼
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,
}
}
優化後之程式碼
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,
}
}