💻
應用心理學提升程式碼可讀性
  • 溫柔資訊教育首頁
  • 應用心理學提升程式碼可讀性
  • 設計原則與效應
    • 鄰近原則 contiguity principle
    • 示例效應 worked example effect
    • 開放目標效應 goal-free effect
    • 分散注意力效應 split-attention effect
    • 冗餘效應 redundancy effect
Powered by GitBook
On this page
  • 概念
  • 範例一
  • 範例二
  • 範例三
  1. 設計原則與效應

冗餘效應 redundancy effect

概念

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

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

範例一

這個例子是一段關於課程管理相關的程式,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,
  }
}
Previous分散注意力效應 split-attention effect

Last updated 3 years ago