การเขียนโค้ด
จัดระเบียบ 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.rbGreeter::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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ