Elixir:
การปรับโครงสร้างโค้ด

วิธีการ:

ลองจัดระเบียบรูปแบบ Elixir ทั่วไป โดยเราจะ Refactor ฟังก์ชัน calculate_stats ที่ทำงานมากเกินไปโดยการแบ่งมันออกเป็นชิ้นเล็ก ๆ ที่สามารถใช้ซ้ำได้

defmodule Stats do
  # โค้ดเดิมที่ยังไม่ได้ Refactor
  def calculate_stats(data) do
    total = Enum.sum(data)
    count = Enum.count(data)
    mean = total / count
    {mean, total}
  end
  
  # โค้ดที่ผ่านการ Refactor
  def calculate_mean(data), do: Enum.sum(data) / Enum.count(data)
  
  def calculate_total(data), do: Enum.sum(data)
  
  def calculate_stats_refactored(data) do
    mean = calculate_mean(data)
    total = calculate_total(data)
    {mean, total}
  end
end

# ตัวอย่างผลลัพธ์
# ก่อน Refactoring
Stats.calculate_stats([1, 2, 3])
# => {2.0, 6}

# หลัง Refactoring
Stats.calculate_stats_refactored([1, 2, 3])
# => {2.0, 6}

ดังที่คุณเห็น ผลลัพธ์ยังคงเดิม แต่ตอนนี้เรามีฟังก์ชันเฉพาะกิจที่สามารถใช้ซ้ำและทดสอบได้โดยอิสระ

การดำดิ่งลึก

การ Refactor ไม่ใช่แนวคิดใหม่ มันเป็นส่วนสำคัญของการเขียนโปรแกรมตั้งแต่ยุคแรกของการพัฒนาซอฟต์แวร์ ผลงานที่น่าสนใจ เช่น “Refactoring: Improving the Design of Existing Code” โดย Martin Fowler ให้แนวปฏิบัติพื้นฐานสำหรับการ Refactor พร้อมข้อมูลเชิงลึกว่าเมื่อใดและวิธีการใช้งาน

ทางเลือกอื่นสำหรับการ Refactor ด้วยตนเอง รวมถึงเครื่องมือวิเคราะห์โค้ดอัตโนมัติ ซึ่งสามารถแนะนำหรือแม้กระทั่งดำเนินการ Refactor ได้ อย่างไรก็ตาม เครื่องมืออัตโนมัติอาจไม่เข้าใจบริบทเต็มรูปแบบของโค้ดได้ตลอดเวลาและอาจพลาดรายละเอียดที่ผู้ตรวจสอบมนุษย์จะค้นพบได้

รายละเอียดการดำเนินงานใน Elixir เฉพาะ รวมถึงการเข้าใจพาราดัมฟังก์ชันและการใช้การจับคู่รูปแบบ, บทบัญญัติป้องกัน, และตัวดำเนินการ pipe เพื่อเขียนโค้ดที่ชัดเจนและกระชับ ตัวอย่างเช่น การ Refactor มักจะเกี่ยวข้องกับการเปลี่ยนฟังก์ชันสไตล์ปฏิบัติการที่ซับซ้อนเป็นฟังก์ชันที่เล็กขึ้น องค์ประกอบได้ ซึ่งตามความชอบของ Elixir สำหรับความไม่เปลี่ยนแปลงและการดำเนินงานที่ไม่มีผลกระทบด้านข้าง

ดูเพิ่มเติม

สำหรับเทคนิคการ Refactor ที่เฉพาะเจาะจงสำหรับ Elixir: