Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

เชี่ยวชาญ Pry: เครื่องมือ Debugging ที่ทุก Junior Rubyist ควรเรียนรู้

เคยพยายาม debug โค้ดด้วยการพิมพ์ puts statements และหวังว่าจะแสดงขึ้นที่ควรเป็นไหม? คุณรู้เจตนาผม — พิมพ์:

puts “This worked!"

ในโค้ด แล้วรันในเทอร์มินัล ได้แค่ไม่มีอะไรแสดง หรืออาจเคยได้ยิน debugging tools แบบหรูหราสำหรับ Rubyists แต่กลัวลอง ใช้ "spaghetti method" แทน: โยนโค้ดที่ text editor ดูว่าอะไรติด ปัญหาคือวิธีนี้ไม่ضمنคำตอบ

Debugging คือสิ่งที่คุณจะทำตลอดชีวิตเขียนโค้ด ไม่ใช่แค่ junior devs! ยิ่งเร็วเรียนรู้เครื่องมือช่วยหา bugs ยิ่งดีต่ออนาคต

เครื่องมือมีอะไรบ้าง? แม้จะมีหลายตัว วันนี้เราจะ "pry" เข้าไปในเครื่องมือยอดนิยมที่ทุก Rubyist ควรรู้จัก — Pry เราจะเรียนรู้การทำงานและความสำคัญ

Pry คืออะไร?

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

Pry เหมือน IRB ที่เสริมแรงแล้ว

คุณน่าจะคุ้นเคยกับ IRB (Interactive Ruby Shell) ที่รันโค้ดใน playground ดูว่าอะไรทำงาน อะไรไม่ทำงาน มันก็เป็น debugging tool ที่มีประโยชน์ ส่วนหนึ่งของ Pry ทำงานคล้ายกัน แต่มี features เพิ่ม ทั้ง IRB และ Pry ใช้คำสั่ง REPL: Read, Evaluate, Print, และ Loop แต่ Pry ให้คุณไปไกลกว่าเวลา debug เช่น Pry ให้ syntax highlighting สีสัน ช่วยตอนพยายามหาว่าโค้ดจะเกิดอะไรขึ้นเมื่อรัน ทำให้เห็น mistakes ได้ง่ายขึ้น โค้ดจึงแก้ได้ง่ายขึ้น

โค้ดตัวอย่าง

เชี่ยวชาญ Pry: เครื่องมือ Debugging ที่ทุก Junior Rubyist ควรเรียนรู้

บันทึกเกี่ยวกับ Debugging

พูดไปแล้วแต่คุ้มค่าที่พูดอีกครั้ง — debugging คือสิ่งที่โปรแกรมเมอร์ทุกคนทำตลอดอาชีพ ไม่มีอะไร "junior" ในการเรียนรู้เครื่องมือเหล่านี้เลย! ยิ่งเร็วเรียนรู้ ยิ่งเป็นโปรแกรมเมอร์ที่ดี

ตั้ง Breakpoints ด้วย Pry

ถึงเวลาดู feature ยอดเยี่ยมของ Pry — ตั้ง breakpoints ในโค้ด สมมติคุณติดปัญหาโค้ดรันไม่เป็นไปตามคาด (เราทุกคนเคยอยู่ที่นี่มั้ย?)

สิ่งที่ทำได้คือตั้ง breakpoint ในส่วนของโค้ดที่ไม่ทำงานตามคาด และคุณจะเข้าสู่ Pry version ที่ "แช่แข็ง" ที่จุดนั้น วิธีอธิบายที่ดีที่สุดคือตัวอย่าง

สมมติเราพยายามหาว่า user ที่เราอยากดูถูก set อย่างถูกต้องหรือไม่ ก่อนอื่น ใส่ binding.pry ลงในโค้ด ตั้ง binding.pry ทวบบรรทัดที่ก่อให้เกิดปัญหา แล้วรันโค้ด

เชี่ยวชาญ Pry: เครื่องมือ Debugging ที่ทุก Junior Rubyist ควรเรียนรู้

ต่อไป ลองเข้าหน้าที่จะ trigger โค้ดนี้ เนื่องจากรัน rails server โลคอล จะลองไปที่: localhost:3000/users/1

คุณจะพบว่าตัวเองอยู่ใน console แบบ IRB ที่สามารถทดสอบโค้ดและดูสิ่งที่เกิดขึ้น

เชี่ยวชาญ Pry: เครื่องมือ Debugging ที่ทุก Junior Rubyist ควรเรียนรู้

จุดนี้ เราสามารถเช็คว่า @user ถูก set เป็น user id ที่ถูกต้องหรือไม่

เชี่ยวชาญ Pry: เครื่องมือ Debugging ที่ทุก Junior Rubyist ควรเรียนรู้

เรายังเช็คได้ว่า user login อยู่หรือไม่:

เชี่ยวชาญ Pry: เครื่องมือ Debugging ที่ทุก Junior Rubyist ควรเรียนรู้

ถ้าอะไร도ไม่เกิดขึ้น?

บางครั้งคุณวาง breakpoints รันโค้ด แทนที่จะเข้าสู่ Pry ไม่มีอะไรเกิดขึ้น แม้ frustrating แต่ให้ सुराग มันหมายความว่าโค้ดไม่เคย trigger Pry เพราะไม่เคยไปถึงจุดนั้น ทำไม? ตั้ง breakpoint ใหม่ก่อนหน้าในโค้ดดูว่าทำงานไหม แม้ดู tedious แต่ให้ข้อมูลสำคัญ!

เมื่อไหร่ควรขอช่วยเหลือ

身為 junior Rubyist บางครั้งต้องขอช่วยจาก senior developer ปัญหาคือตัดสินใจเมื่อไหร่ควร debug ต่อ และเมื่อไหร่ควรขอช่วย เวลา debug ควรพยายาม replicate ปัญหา ตั้ง breakpoints ด้วย Pry และขุดลึก ถ้าหลัง 20-30 นาทียังไม่ใกล้คำตอบ อาจถึงเวลาขอช่วย

ลอง Pry ดูสิ

พร้อมเพิ่ม Pry ใน debugging toolbox? ต้องทำ 2 อย่าง ติดตั้ง gem ใส่ใน Gemfile รัน bundle install: gem 'pry'

หรือติดตั้งด้วยตนเอง: gem install pry

ต้องแน่ใจว่าโค้ดคาดหวัง Pry ใส่บรรทัดนี้ในไฟล์:

require 'pry'

แค่นี้! คุณพร้อมใช้ Pry แล้ว!