ฉันเคยได้ยินบางคนบอกว่าหนึ่งในวิธีที่ดีที่สุดในการปรับปรุงความสามารถในการเขียนโค้ดของคุณคือการอ่านโค้ดของผู้อื่นและทำความเข้าใจกับมัน คำถามของฉันในฐานะโปรแกรมเมอร์ที่ค่อนข้างใหม่ฉันจะไปหาตัวอย่างซอร์สโค้ดที่ดีที่อยู่ไม่ไกลเกินหัวได้อย่างไร
ฉันเคยได้ยินบางคนบอกว่าหนึ่งในวิธีที่ดีที่สุดในการปรับปรุงความสามารถในการเขียนโค้ดของคุณคือการอ่านโค้ดของผู้อื่นและทำความเข้าใจกับมัน คำถามของฉันในฐานะโปรแกรมเมอร์ที่ค่อนข้างใหม่ฉันจะไปหาตัวอย่างซอร์สโค้ดที่ดีที่อยู่ไม่ไกลเกินหัวได้อย่างไร
คำตอบ:
คุณสามารถเรียกดูโครงการมาเปิดพื้นที่เก็บข้อมูลบนเว็บไซต์เช่นGitHub , Codeplex , Google CodeหรือBitBucket คุณจะพบโครงการที่มีระดับความซับซ้อนแตกต่างกันดังนั้นคุณควรจะสามารถค้นหาสิ่งที่คุณสนใจและไม่ไปหัวในตอนแรก
ตัวเลือกอื่นคือโพสต์บล็อกของรหัสประจำสัปดาห์ของ Scott Hanselman
ฉันขอแนะนำให้เริ่มต้นด้วยโครงการที่มีการใช้งานและมีการใช้งานอยู่เพื่อลดอัตราการเริ่มต้นในการอ่านโค้ดที่ยังไม่ผ่านการใช้งานและการตรวจสอบอย่างละเอียด เป็นการดีที่จะหาสิ่งที่คุณสนใจและคุณสามารถใช้ การใช้แอพจะช่วยให้คุณเข้าใจซอร์สโค้ด ข้อดีอีกประการของการเลือกโครงการโอเพ่นซอร์สคือคุณอาจมีส่วนร่วมในการแก้ไขหรือคุณสมบัติบางอย่างซึ่งจะช่วยทำให้การอ่านรหัสน่าสนใจยิ่งขึ้น
การจ้องมองที่รหัสของคนอื่นอาจเป็นการข่มขู่ดังนั้นเริ่มต้นด้วยmain
ฟังก์ชั่น (หรือเทียบเท่า) และทำงานผ่านจากที่นั่น
มีคนน้อยมากที่เขียนซอร์สโค้ดที่ดีในการลองครั้งแรก ซอร์สโค้ดที่ดีมักถูกสร้างขึ้นโดยชุดการแก้ไข ดังนั้นหากคุณสามารถค้นหาซอร์สโค้ดที่ได้รับการตรวจสอบหลายครั้งและแก้ไขหลายครั้งคุณอาจอยู่ในตำแหน่งที่ดีกว่า โครงการโอเพ่นซอร์สบางโครงการ (และบางส่วนของโครงการเหล่านี้) ได้รับการตรวจสอบเป็นพิเศษ รหัสที่มาจาก บริษัท ที่มีรอบการตรวจสอบที่บังคับ (เช่น Google แต่มีอื่น ๆ อีกมากมาย) อาจเหมาะกับการเรียกเก็บเงิน
ที่ถูกกล่าวว่าฉันไม่แน่ใจว่าเป้าหมายของคุณควรจะหา "รหัสที่ดี" ควรดูที่รูปแบบต่าง ๆ ของรหัส (เช่นที่เขียนโดยเพื่อนร่วมงานของคุณ) และเรียนรู้วิธีระบุข้อดีและข้อเสียของมัน ยิ่งคุณได้คะแนนที่แย่มากเท่าไหร่คุณก็ยิ่งพยายามทำให้โค้ดของคุณดีขึ้นและรู้จักวิธีการมากขึ้นเท่านั้น
โดยเฉพาะอย่างยิ่งฉันเชื่อว่าวิธีที่ดีมากในการรับรู้โค้ดที่ดีคือการใช้ดีบักเกอร์แบบอินเทอร์แอคทีฟเพื่อติดตามผ่านโค้ดที่ซับซ้อนตามเครือข่ายของการเรียกใช้ ตัวอย่างเช่นไปที่หนึ่งในไฟล์หลักของ บริษัท ของคุณวางเบรกพอยต์และเริ่มค้นหาสิ่งต่าง ๆ จากพวกเขา
หลังจากสองสามครั้งคุณจะสับสนกับฟังก์ชั่น 100 บรรทัดที่มีระดับของการเยื้องและการขึ้นต่อกันของ globals ถึงสิบระดับและไม่กี่ครั้งที่คุณผ่านโค้ดที่ย่อยสลายได้ดีคุณจะปรับปรุงการเขียนโปรแกรมของคุณเอง
แทนที่จะค้นหารหัสที่ยอดเยี่ยมให้ดูเป็นหนังสือโปรแกรมทั่วไป
เช่นรหัสเสร็จเขียนรหัสแข็งรูปแบบการออกแบบ (ฉันแน่ใจว่ามีหนังสืออื่น ๆ อีกมากมายในคำถามและคำตอบในเว็บไซต์นี้)
หนังสือเหล่านี้อธิบายถึงปรัชญาที่ถือว่าเป็นรหัสที่ดี ความสามารถในการอ่าน, ประสิทธิภาพ, การบำรุงรักษา, การตรวจจับข้อบกพร่องเป็นต้น
ซึ่งทำหน้าที่เป็นแหล่งข้อมูลที่ดียิ่งขึ้นและมีประสิทธิภาพมากกว่าการพยายามคิดออกว่าผู้เขียนพยายามทำอะไร
การออกแบบซอฟต์แวร์ Ps Good เป็นสิ่งที่คุณควรพิจารณาเช่นกัน ซึ่งคงเป็นการยากที่จะจดจำ แต่เพียงผู้เดียวจากการสังเกตรหัสเนื่องจากโครงการมีขนาดใหญ่พอ
ฉันพบว่ารหัสของไลบรารีที่มาพร้อมกับภาษาการเขียนโปรแกรมที่คุณเลือกมักจะเป็นการเริ่มต้นที่ดีในการดูว่าอะไรที่คิดว่าเป็นแนวปฏิบัติที่ดีที่สุดและรูปแบบการเข้ารหัสที่ดี
แม้ว่าคุณไม่ต้องการเริ่มต้นด้วยสถานที่ต่าง ๆ เช่นการจัดเรียงอัลกอริทึมหรือคลาสคอนเทนเนอร์ที่ซับซ้อน
อีกสถานที่สำหรับข้อมูลเชิงลึกที่น่าสนใจในการเขียนโค้ดคือ Project Euler ( http://projecteuler.net/ ) ข้อเสียเล็กน้อยที่นั่น: คุณต้องแก้ปัญหาก่อนเพื่อเข้าใช้งานฟอรัมที่ผู้อื่นโพสต์วิธีแก้ไขปัญหาของพวกเขา (ความท้าทายที่น่าสนใจสำหรับประสบการณ์ทุกระดับ) แต่เมื่อเสร็จแล้วคุณจะพบตัวอย่างสำหรับภาษาการเขียนโปรแกรมที่สำคัญเกือบทั้งหมด และเนื่องจากคุณได้แก้ไขปัญหาไปแล้วมันจะช่วยให้คุณเข้าใจรหัสประชาชนอื่น ๆ รวมถึงคุณจะได้เห็นรหัสภาษาที่คุณยังไม่รู้ แต่อาจพบว่าน่าสนใจ
ฉันชอบอ่านรหัสที่สวยงามจริงๆ มันมีตัวอย่างโค้ดสั้น ๆ แต่ดีมากพร้อมคำอธิบายโดยละเอียด
... นักวิทยาศาสตร์คอมพิวเตอร์ชั้นนำเสนอกรณีศึกษาที่แสดงให้เห็นว่าพวกเขาค้นพบวิธีการแก้ปัญหาที่ผิดปกติและออกแบบมาอย่างดีเพื่อโครงการที่มีชื่อเสียง คุณจะสามารถมองข้ามไหล่ของผู้เชี่ยวชาญด้านการเข้ารหัสและการออกแบบที่สำคัญเพื่อดูปัญหาผ่านสายตาของพวกเขา
... ผู้เขียนคิดเสียงดังขณะทำงานผ่านสถาปัตยกรรมของโครงการการแลกเปลี่ยนที่เกิดขึ้นในการก่อสร้างและเมื่อมีความสำคัญต่อการละเมิดกฎ
หนังสือเล่มนี้ประกอบด้วยบทที่ 33 โดย Brian Kernighan, KarlFogel, Jon Bentley, Tim Bray, Elliotte Rusty Harold, Michael Feathers, Alberto Savoia, Charles Petzold, Douglas Crockford, Henry S. Warren, Jr., Ashish Gulhati, Lincoln Stein, Jim Kent แจ็ค Dongarra และ PiotrLuszczek อดัม Kolawa เกร็ก Kroah - ฮาร์ทแมน Diomidis Spinellis วิลเลียมเค็นแอนดรู Kuchling เทรวิสอี. โอลิแฟนท์โรนัลหัวหมากโรเจอร์โอทีพี Otte และ Douglas C. Schmidt, AndrewPatzer, Andreas Zeller, Yukihiro Matsumoto, Arun Mehta, ทีวี Raman, Laura Wingerd และ Christopher Seiwald และ Brian Hayes ...