บทความนี้ได้รับการแปลเป็นภาษารัสเซียแล้ว ขอบคุณ Leonid Suschev
คุณเพิ่งเปลี่ยนทีมในที่ทำงานหรือเพิ่งเริ่มงานใหม่ หรือคุณพบจุดบกพร่องในแอปโอเพนซอร์ซที่คุณชื่นชอบ และต้องการเขียนคำขอดึงครั้งแรกของคุณ แต่หลังจากที่คุณ git clone
แล้วเปิด app/models
คุณกำลังหลงทาง แม้ว่าราง โครงสร้าง เหมือนกับที่คุณคุ้นเคย คุณไม่สามารถหาทางเลี่ยง รหัส ได้ . วิธีที่เร็วที่สุดในการเรียนรู้แอป Rails ใหม่ที่ไม่คุ้นเคยนี้คืออะไร
สร้างคำศัพท์ของโครงการ
Player
. คืออะไร และ Session
. คืออะไร ? แล้ว Account
เทียบกับ User
เทียบกับ Provider
?
ทุกแอพใช้คำศัพท์และคำเปรียบเทียบที่แตกต่างกัน และถ้าคุณไม่เข้าใจคำศัพท์ของแอป คุณจะเสียเวลาเรียกดู app/models
ทุกครั้งที่เห็นชื่อคลาสใหม่ หรือแย่กว่านั้น คุณจะตั้งสมมติฐานที่ไม่ถูกต้องเกี่ยวกับวิธีการทำงานของฟีเจอร์
ดังนั้น สิ่งแรกที่คุณต้องทำคือสร้างคำศัพท์นั้น เรียนรู้ว่าแอพนี้ทำมาจากอะไร และถ้าคุณต้องการทำอย่างรวดเร็ว ให้เริ่มต้นด้วยการอ่าน db/schema.rb
. คุณจะได้เรียนรู้เงื่อนไขที่แอปใช้ และข้อมูลทั้งหมดที่เกี่ยวข้องกันอย่างไร ให้ความสนใจเป็นพิเศษกับ *_id
เพื่อให้คุณเห็นว่าโมเดลเชื่อมต่อกันอย่างไร
หากคุณมองเห็นได้ชัดเจนขึ้น ให้ลองใช้ Rails-erd gem มันสร้างไดอะแกรมจากโมเดล Rails ของคุณ โดยแสดงตารางและคอลัมน์ทั้งหมดของคุณ และวิธีที่พวกมันโต้ตอบ เก็บงานพิมพ์ไว้บนโต๊ะทำงาน แล้วคุณจะเข้าใจส่วนอื่นๆ ของแอปได้ง่ายขึ้น
ดำเนินการต่อด้วยโมเดลและออบเจ็กต์ Ruby ธรรมดา
ในแอพ Rails ที่ออกแบบมาอย่างดี ไม่ใช่ทุกอย่างที่จะได้รับการสนับสนุนจากตารางฐานข้อมูล หากต้องการสร้างคำศัพท์ในโครงการของคุณต่อไป ให้ดูภายใน app/models
สำหรับคลาสและแอตทริบิวต์พิเศษที่คุณไม่เห็นใน db/schema.rb
.
อย่าใช้เวลามากเกินไปที่นี่ มันง่ายที่จะหลงทางในการทำงานของสิ่งต่าง ๆ คุณมาที่นี่เพื่อกรอกคำศัพท์ของโครงงาน
เมื่อคุณเรียนรู้เพิ่มเติมเกี่ยวกับส่วนต่างๆ ที่แอปของคุณสร้างขึ้น คุณอาจสงสัยว่า ทำไม วัตถุบางอย่างมีอยู่จริง หรือเหตุใดวัตถุเหล่านั้นจึงเข้าคู่กันในแบบที่พวกมันทำ และนั่นคือประเด็นของขั้นตอนต่อไป
ลองใช้แอปและดู "ทำไม"
เมื่อคุณรู้สึกสบายใจกับวัตถุที่แอปใช้แล้ว ให้เริ่มต้นแอป คลิกไปรอบๆ และสำรวจ หากมีเอกสารประกอบก็สามารถช่วยแนะนำคุณได้ มิฉะนั้น เพียงแค่ดูคำศัพท์ที่คุณเพิ่งเรียนรู้มาสู่ชีวิต
เมื่อคุณใช้แอปนี้ คุณจะเริ่มมองเห็นได้จากระดับที่สูงขึ้น คุณจะสังเกตเห็นว่ามีเหตุผลหลายประการที่ทำให้โมเดลมีความเชื่อมโยงกัน เหตุใดจึงรวมกลุ่มกัน เหตุใดจึงเลือกชื่อชั้นเรียนเหล่านั้น อาจปรากฏบนหน้าร่วมกันหรือสร้างจากแบบฟอร์มเดียวกัน
และเมื่อคุณเริ่มเข้าใจส่วนต่างๆ ที่แอปสร้างขึ้นและเหตุใดจึงมีอยู่ คุณก็พร้อมที่จะหาวิธีการทำงานทั้งหมด
ค้นหา "วิธีการ"
ถึงตอนนี้ คุณมีความรู้เกี่ยวกับแอปมากพอที่จะเรียนรู้ในรายละเอียด คุณจะไม่ถูกรบกวนด้วยข้อกำหนดใหม่และการโต้ตอบใหม่ คุณเลือกสิ่งหนึ่งที่ต้องการเรียนรู้และทำตามได้ตลอด
มีหลายวิธีที่คุณสามารถไปจากที่นี่ นี่เป็นรายการโปรดบางส่วนของฉัน:
- เรียกดู UI และคิดว่า:คุณจะสร้างคุณลักษณะนี้ได้อย่างไร โดยรู้ว่าคุณรู้อะไรเกี่ยวกับชิ้นส่วนเหล่านี้บ้าง คุณเดาได้ไหม ใช้โปรแกรมแก้ไขข้อบกพร่องเพื่อยืนยันการคาดเดาของคุณ หรือค้นพบวิธีการทำงานจริง
- เลือกกรณีทดสอบ และติดตามตลอดทางผ่านแอพ อ่านโค้ดหรือสำรวจด้วยโปรแกรมแก้ไขข้อบกพร่อง
- เลือกเส้นทางหรือการทำงานของตัวควบคุม คุณช่วยหาวิธีเข้าถึงการทำงานของคอนโทรลเลอร์จาก UI ได้ไหม
นี่เป็นเวลาที่ดีที่จะย้อนกลับไปดูแบบจำลองของคุณและวัตถุ Ruby ธรรมดา และครั้งนี้ คุณ สามารถ เข้าไปดูรายละเอียดวิธีการทำงานของโมเดล
อยากรู้เกี่ยวกับแอพ ค้นหาช่องว่างในความรู้ของคุณและปิดด้วยโปรแกรมแก้ไขข้อบกพร่องและโค้ด
ทำไมไม่เริ่มด้วยการทดสอบล่ะ
ฉันเคยได้ยินคนพูดว่า "ถ้าคุณต้องการเข้าใจ codebase ให้เริ่มด้วยการทดสอบ! การทดสอบเป็นเอกสารที่ปฏิบัติการได้!”
แต่สิ่งนี้ไม่เคยได้ผลสำหรับฉัน กรณีทดสอบแคบเกินไป มีรายละเอียดมากเกินไป ถ้าฉันเรียนรู้จากการทดสอบ ฉันรู้สึกเหมือนพลาดจุดที่ใหญ่กว่าของแอป
เพื่อที่จะเข้าใจบางสิ่งที่ใหญ่เท่ากับแอป Rails หรือแม้แต่อัญมณีส่วนใหญ่ ฉันต้องการภาพรวมก่อนเสมอ ฉันต้องรู้ว่าส่วนประกอบใดบ้างที่ประกอบเป็นแอป และเหตุใดจึงมีอยู่
แต่แน่นอน ตรวจสอบให้แน่ใจว่าการทดสอบทำงาน หากไม่เป็นเช่นนั้น แสดงว่าคุณกำลังทำงานกับระบบที่เสียหาย และคุณไม่สามารถพึ่งพาสิ่งที่คุณค้นพบจากระบบที่เสียหายได้
อะไร ทำไม อย่างไร
ในการทำความเข้าใจแอป Rails ใหม่ ให้ทำตามขั้นตอนทั้งสามนี้:
- อะไร ส่วนต่าง ๆ ประกอบแอพนี้หรือไม่
- ทำไม มีชิ้นส่วนเหล่านั้นหรือไม่? ทำไมพวกเขาถึงรวมตัวกันแบบนั้น
- อย่างไร แต่ละชิ้นทำงานหรือไม่
ซึ่งจะให้ทั้งมุมมองกว้างๆ และความรู้แคบๆ ที่คุณต้องการเพื่อทำให้แอปใหม่นั้นเป็นของคุณ
ป.ล. ฉันกำลังปล่อย ฝึกหัดรถไฟ สัปดาห์หน้า. ดังนั้น หากคุณต้องการรับส่วนลด 25% สำหรับการเข้าถึงล่วงหน้า คุณจะต้องสั่งซื้อเร็วๆ นี้!