คุณกำลังทำงานกับไลบรารีหรือคุณลักษณะใหม่ล่าสุด และคุณไม่สามารถเข้าใจเอกสารได้ อาจเป็นเรื่องยากที่จะตั้งค่า คุณจึงต้องสลับไปมาระหว่าง RDoc จนกว่าคุณจะเรียนรู้ว่าทุกอย่างลงตัวกันอย่างไร บางทีเอกสารก็ไม่มีอยู่จริง หรือบางทีคุณอาจเรียนรู้ได้ดีที่สุดโดยดูตัวอย่างมากมาย
คุณต้องการความช่วยเหลือ แต่คุณจะเรียนรู้วิธีใช้ฟีเจอร์ได้จากที่ไหน หากไม่ใช่เอกสารประกอบ
หนึ่งในฟีเจอร์ GitHub ที่ฉันโปรดปราน
เมื่อคุณต้องการไปไกลกว่าเอกสารประกอบและดูการใช้งานไลบรารีหรือคุณลักษณะในโลกแห่งความเป็นจริง ใช้การค้นหาโค้ดของ GitHub
ตัวอย่างเช่น สมมติว่าฉันเพิ่งอ่านคู่มือ Rails เกี่ยวกับ Conditional GET Support ฉันรู้สึกว่าฉันเข้าใจแล้ว แต่ฉันต้องการดูตัวอย่างเพิ่มเติมก่อนที่จะนำไปใช้จริง
ฉันสามารถกระโดดเข้าสู่การค้นหา GitHub และมองหา "if stale?"
. จากนั้นในแถบด้านข้าง เลือก code
และ Ruby
:
{% img img-responsive /images/posts/code-search.gif 783 484 กำลังค้นหาโค้ดบางส่วน %}
และตอนนี้ฉันมีตัวอย่างที่ดีมากมายเกี่ยวกับวิธีที่stale?
สามารถใช้ได้
ตัวอย่างทั้งหมดไม่น่าสนใจ แต่ในรายการหนึ่ง ฉันสังเกตเห็นผู้เขียนใช้ Post.maximum
:
class ArchivesController < ApplicationController
def index
if stale?(last_modified: (Post.maximum(:updated_at) || EPOCH).utc, public: true)
@months = Post.find_all_grouped_by_month
end
end
end
ดูเหมือนจะเป็นวิธีที่ดีในการใช้ stale?
. และถ้าฉันไม่ได้ดูตัวอย่างนี้ ฉันอาจไม่ได้คิดที่จะลอง
คุณควรใช้สิ่งที่คุณพบอย่างไร
เมื่อคุณค้นหาโค้ดโอเพนซอร์ซ คุณจะได้รับตัวอย่างหลายร้อยตัวอย่างสำหรับเกือบทุกคุณลักษณะ คุณจะสังเกตเห็นว่าเอกสารมีความสมเหตุสมผลตรงไหน และส่วนไหนที่ง่ายเกินไป และคุณจะเห็นอ็อบเจกต์ทำงานร่วมกันในโค้ดจริง ซึ่งจะสอนคุณเกี่ยวกับการเชื่อมต่อชั้นเรียนมากกว่าที่ RDoc จะทำได้
ยังคงใช้ตัวอย่างเพื่อเรียนรู้สิ่งใหม่ไม่ใช่เพื่อลัทธิสินค้าในโครงการของคุณเอง การใช้โค้ดโดยไม่เข้าใจเป็นวิธีที่เร็วที่สุดสำหรับระบบที่ออกแบบมาไม่ดี
ในตัวอย่างของฉัน maximum
อาจไม่ใช่สิ่งที่ถูกต้องในโครงการของฉัน ฉันไม่ควรคัดลอกบรรทัดโดยไม่ได้เรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ โดยไม่เข้าใจว่าเมื่อใดจึงจะเหมาะสมที่จะใช้ แต่ตัวอย่างสามารถสอนสิ่งที่คุณไม่เคยรู้มาก่อน และเป็นวิธีที่ยอดเยี่ยมในการตัดสินใจว่าจะเรียนรู้อะไรต่อไป
เช่นเดียวกับการค้นหาใดๆ จะต้องฝึกฝนเพื่อให้ได้ผลลัพธ์ที่ดี แต่ฉันได้เรียนรู้มากมายจากโค้ดที่พบ และรู้ว่าคุณก็เช่นกัน