0Pricing
Ruby Academy · บทเรียน

การเขียนโค้ด

จัดระเบียบ Gem

การเขียนโค้ด เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

การจัดระเบียบโค้ดของเจม

โค้ดเจมที่ดีควรอ่านง่าย เรียกใช้ได้ง่าย และจัดอยู่ภายใต้เนมสเปซ เพื่อไม่ให้ชนกับไลบรารีอื่น เครื่องมือสำคัญคือโมดูลระดับบนสุดที่ครอบทุกอย่างไว้

  • ใช้โมดูลเนมสเปซหนึ่งโมดูลต่อเจมหนึ่งตัว
  • ใช้หนึ่งไฟล์ต่อหนึ่งคลาส โดยให้สอดคล้องกับเนมสเปซ
  • เปิดเผยส่วนติดต่อขนาดเล็ก

โมดูลเนมสเปซ

ครอบคลาสทั้งหมดไว้ในโมดูลที่ตั้งชื่อตามเจมของคุณ วิธีนี้ป้องกันไม่ให้ Client ของคุณชนกับ Client ของผู้อื่น

module Greeter
  class Hello
    def message
      "Hi there"
    end
  end
end

puts Greeter::Hello.new.message

ธรรมเนียมการตั้งชื่อไฟล์

เครื่องมือของ Ruby คาดว่าเส้นทางไฟล์จะตรงกับชื่อค่าคงที่:

  • Greeter อยู่ใน lib/greeter.rb
  • Greeter::Hello อยู่ใน lib/greeter/hello.rb

ธรรมเนียมนี้ทำให้ตัวโหลดอัตโนมัติค้นหาไฟล์ได้โดยอัตโนมัติ

การเรียกใช้ไฟล์ภายใน

ไฟล์ทางเข้าจะเชื่อมทุกอย่างเข้าด้วยกันด้วย require_relative ไฟล์ของแต่ละคลาสจะถูกเรียกใช้เพียงครั้งเดียว ทำให้โหลดไลบรารีทั้งหมดได้ด้วย require 'greeter' เพียงคำสั่งเดียว

ส่วนติดต่อสาธารณะที่ชัดเจน

เปิดเผยเฉพาะเมธอดจำนวนน้อยที่ผู้ใช้เรียกใช้จริง รูปแบบที่พบได้ทั่วไปคือเมธอดอำนวยความสะดวกระดับโมดูล ซึ่งส่งต่อการทำงานให้คลาสภายใน

module Greeter
  def self.say(name)
    "Hello, " + name + "!"
  end
end

puts Greeter.say("Ada")

การซ่อนส่วนภายใน

กำหนดเมธอดตัวช่วยเป็น private เพื่อไม่ให้เป็นส่วนหนึ่งของข้อตกลงสาธารณะ สิ่งใดก็ตามที่เปิดเผยต่อสาธารณะถือเป็นคำสัญญาต่อผู้ใช้ ดังนั้นควรเปิดเผยเฉพาะส่วนที่ตั้งใจและมีขนาดเล็ก

class Calculator
  def total(a, b)
    add(a, b)
  end

  private

  def add(x, y)
    x + y
  end
end

puts Calculator.new.total(2, 3)

รูปแบบการกำหนดค่า

เจมจำนวนมากมีบล็อกการกำหนดค่าเพื่อให้ผู้ใช้ตั้งค่าตัวเลือกต่าง ๆ ได้ในครั้งเดียว รูปแบบง่าย ๆ คือเก็บการตั้งค่าไว้ในออบเจ็กต์การกำหนดค่า

module App
  class Config
    attr_accessor :api_key
  end

  def self.config
    @config ||= Config.new
  end

  def self.configure
    yield(config)
  end
end

App.configure { |c| c.api_key = "secret" }
puts App.config.api_key

ข้อผิดพลาดแบบกำหนดเอง

กำหนดคลาสข้อผิดพลาดเฉพาะของเจมไว้ภายใต้เนมสเปซของคุณ เพื่อให้ผู้ใช้ดักจับข้อผิดพลาดของคุณได้อย่างเจาะจง สืบทอดจาก StandardError

module Payment
  class Error < StandardError; end
  class DeclinedError < Error; end
end

begin
  raise Payment::DeclinedError, "card declined"
rescue Payment::Error => e
  puts "Handled: " + e.message
end

หลีกเลี่ยงการแก้ไขคลาสส่วนกลาง

หลีกเลี่ยงการแก้ไขคลาสหลักอย่าง String ในระดับส่วนกลาง เพราะจะทำให้โค้ดส่วนอื่นเกิดพฤติกรรมที่คาดไม่ถึง หากจำเป็นต้องขยายความสามารถ ให้ใช้การปรับแต่งเฉพาะขอบเขตเพื่อจำกัดขอบเขตของการเปลี่ยนแปลง หรือเพิ่มเมธอดตัวช่วยในคลาสของคุณเอง

ลดสิ่งที่ต้องพึ่งพา

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

สิ่งที่ต้องพึ่งพาน้อยลงหมายถึงข้อขัดแย้งด้านเวอร์ชันน้อยลงและติดตั้งได้เร็วขึ้น

จัดทำเอกสารส่วนติดต่อสาธารณะ

เพิ่มความคิดเห็นที่อธิบายอาร์กิวเมนต์และค่าที่ส่งกลับของเมธอดสาธารณะแต่ละรายการ เครื่องมืออย่าง YARD จะเปลี่ยนความคิดเห็นเหล่านี้เป็นเอกสารที่เปิดดูได้ และ README ที่ดีพร้อมตัวอย่างก็มักเป็นปัจจัยสำคัญที่ทำให้ผู้คนตัดสินใจเลือกใช้เจมของคุณ

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจของคุณเกี่ยวกับการจัดระเบียบโค้ดเจม

สรุป: การเขียนโค้ด

คุณได้เรียนรู้วิธีจัดระเบียบส่วนภายในของเจม:

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

ถัดไปเราจะเพิ่มการทดสอบและการกำหนดเวอร์ชัน

คำถามที่พบบ่อย

บทเรียน “การเขียนโค้ด” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเขียนโค้ด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเขียนโค้ด”

จัดระเบียบ Gem คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การเขียนโค้ด” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม

ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โครงสร้าง Gem
  2. การเขียนโค้ด
  3. การทดสอบและการกำหนดเวอร์ชัน
  4. การเผยแพร่ไปยัง RubyGems
← กลับไปที่ Ruby Academy