คุณจะไปอ่านตัวอย่างของซอร์สโค้ดได้ที่ไหน [ปิด]


53

ฉันเคยได้ยินบางคนบอกว่าหนึ่งในวิธีที่ดีที่สุดในการปรับปรุงความสามารถในการเขียนโค้ดของคุณคือการอ่านโค้ดของผู้อื่นและทำความเข้าใจกับมัน คำถามของฉันในฐานะโปรแกรมเมอร์ที่ค่อนข้างใหม่ฉันจะไปหาตัวอย่างซอร์สโค้ดที่ดีที่อยู่ไม่ไกลเกินหัวได้อย่างไร


มีการถามเรื่องนี้ใน StackOverflow: stackoverflow.com/questions/3083525/…
nikie

3
ฉันแค่มองกลับไปที่รหัสเดิมของฉัน
Paul

Paul นั่นจะไม่ช่วย OP ได้หรือไม่ เห็นได้ชัดว่าพวกเขาไม่มีรหัสที่ดีที่เขียนไว้แล้วในอดีต sheesh
junky

2
@junky หวังว่าพวกเขาจะมีอารมณ์ขันบ้าง :) :)
Konrad Morawski

นี่คือคำถามที่ฉันจะถาม แต่มันเป็นความโชคดีของฉันที่ฉันพบมันฉันคิดว่านี่เป็นปัญหาของฉันเท่านั้นที่ฉันไม่รู้ว่าจะหารหัสได้ที่ไหน
Dhananjay

คำตอบ:


30

คุณสามารถเรียกดูโครงการมาเปิดพื้นที่เก็บข้อมูลบนเว็บไซต์เช่นGitHub , Codeplex , Google CodeหรือBitBucket คุณจะพบโครงการที่มีระดับความซับซ้อนแตกต่างกันดังนั้นคุณควรจะสามารถค้นหาสิ่งที่คุณสนใจและไม่ไปหัวในตอนแรก

ตัวเลือกอื่นคือโพสต์บล็อกของรหัสประจำสัปดาห์ของ Scott Hanselman

ฉันขอแนะนำให้เริ่มต้นด้วยโครงการที่มีการใช้งานและมีการใช้งานอยู่เพื่อลดอัตราการเริ่มต้นในการอ่านโค้ดที่ยังไม่ผ่านการใช้งานและการตรวจสอบอย่างละเอียด เป็นการดีที่จะหาสิ่งที่คุณสนใจและคุณสามารถใช้ การใช้แอพจะช่วยให้คุณเข้าใจซอร์สโค้ด ข้อดีอีกประการของการเลือกโครงการโอเพ่นซอร์สคือคุณอาจมีส่วนร่วมในการแก้ไขหรือคุณสมบัติบางอย่างซึ่งจะช่วยทำให้การอ่านรหัสน่าสนใจยิ่งขึ้น

การจ้องมองที่รหัสของคนอื่นอาจเป็นการข่มขู่ดังนั้นเริ่มต้นด้วยmainฟังก์ชั่น (หรือเทียบเท่า) และทำงานผ่านจากที่นั่น


3
-1: ผู้เริ่มต้นไม่สามารถบอกได้ว่าเป็นรหัสที่ดีหรือไม่ดีดังนั้นการ 'เรียกดู' โครงการจะไม่ช่วยอะไร คุณครอบคลุมสิ่งนี้ด้วยการแนะนำโครงการ 'ที่สร้างขึ้น' แต่ฉันเห็นโค้ดที่แย่มากในโครงการที่เราทุกคนเคยได้ยิน ฉันไม่มีคำตอบที่ดีกว่านี้ จริงๆแล้วมันเป็นคำถามที่ยากต้องการคำตอบที่เหมาะกับระดับทักษะความสนใจและการกรองผ่านความรู้ของผู้ให้คำปรึกษา
Cris

1
@ Chris ฉันไม่เห็นด้วย แต่ฉันจะทราบว่ามีสิ่งมากมายที่ต้องเรียนรู้จากการอ่านรหัสที่ไม่ดีเช่นกัน เนื้อหาการอ่านและการติดตามรหัสที่ไม่ดียิ่งยากกว่าการดำน้ำในโครงการที่มีการจัดระเบียบอย่างเหมาะสม (และนี่คือก่อนที่เราจะพยายามหาว่ารหัส "ดี" คืออะไร :))
Adam Lear

1
จริงเพียงพอ แต่สำหรับพวกเราที่ไม่ใช่อัจฉริยะการศึกษาด้วยตนเองมีข้อ จำกัด เริ่มต้นส่วนใหญ่ (ในทุกสาขา) ไม่จำเป็นต้องสัมผัสกับ "ความดี" ที่จะได้รับความรู้สึกของสิ่งเป็นสิ่งที่ดี และ "อินเทอร์เน็ต" เป็นเสียงเรียกเข้าทั่วโลกของ "ฉันดี!" ซึ่งไม่ได้ช่วยอะไร
Cris

10

มีคนน้อยมากที่เขียนซอร์สโค้ดที่ดีในการลองครั้งแรก ซอร์สโค้ดที่ดีมักถูกสร้างขึ้นโดยชุดการแก้ไข ดังนั้นหากคุณสามารถค้นหาซอร์สโค้ดที่ได้รับการตรวจสอบหลายครั้งและแก้ไขหลายครั้งคุณอาจอยู่ในตำแหน่งที่ดีกว่า โครงการโอเพ่นซอร์สบางโครงการ (และบางส่วนของโครงการเหล่านี้) ได้รับการตรวจสอบเป็นพิเศษ รหัสที่มาจาก บริษัท ที่มีรอบการตรวจสอบที่บังคับ (เช่น Google แต่มีอื่น ๆ อีกมากมาย) อาจเหมาะกับการเรียกเก็บเงิน

ที่ถูกกล่าวว่าฉันไม่แน่ใจว่าเป้าหมายของคุณควรจะหา "รหัสที่ดี" ควรดูที่รูปแบบต่าง ๆ ของรหัส (เช่นที่เขียนโดยเพื่อนร่วมงานของคุณ) และเรียนรู้วิธีระบุข้อดีและข้อเสียของมัน ยิ่งคุณได้คะแนนที่แย่มากเท่าไหร่คุณก็ยิ่งพยายามทำให้โค้ดของคุณดีขึ้นและรู้จักวิธีการมากขึ้นเท่านั้น

โดยเฉพาะอย่างยิ่งฉันเชื่อว่าวิธีที่ดีมากในการรับรู้โค้ดที่ดีคือการใช้ดีบักเกอร์แบบอินเทอร์แอคทีฟเพื่อติดตามผ่านโค้ดที่ซับซ้อนตามเครือข่ายของการเรียกใช้ ตัวอย่างเช่นไปที่หนึ่งในไฟล์หลักของ บริษัท ของคุณวางเบรกพอยต์และเริ่มค้นหาสิ่งต่าง ๆ จากพวกเขา

หลังจากสองสามครั้งคุณจะสับสนกับฟังก์ชั่น 100 บรรทัดที่มีระดับของการเยื้องและการขึ้นต่อกันของ globals ถึงสิบระดับและไม่กี่ครั้งที่คุณผ่านโค้ดที่ย่อยสลายได้ดีคุณจะปรับปรุงการเขียนโปรแกรมของคุณเอง


4

แทนที่จะค้นหารหัสที่ยอดเยี่ยมให้ดูเป็นหนังสือโปรแกรมทั่วไป

เช่นรหัสเสร็จเขียนรหัสแข็งรูปแบบการออกแบบ (ฉันแน่ใจว่ามีหนังสืออื่น ๆ อีกมากมายในคำถามและคำตอบในเว็บไซต์นี้)

หนังสือเหล่านี้อธิบายถึงปรัชญาที่ถือว่าเป็นรหัสที่ดี ความสามารถในการอ่าน, ประสิทธิภาพ, การบำรุงรักษา, การตรวจจับข้อบกพร่องเป็นต้น

ซึ่งทำหน้าที่เป็นแหล่งข้อมูลที่ดียิ่งขึ้นและมีประสิทธิภาพมากกว่าการพยายามคิดออกว่าผู้เขียนพยายามทำอะไร

การออกแบบซอฟต์แวร์ Ps Good เป็นสิ่งที่คุณควรพิจารณาเช่นกัน ซึ่งคงเป็นการยากที่จะจดจำ แต่เพียงผู้เดียวจากการสังเกตรหัสเนื่องจากโครงการมีขนาดใหญ่พอ


1
ฉันต้องการพูดถึง "Clean Code" เป็นทรัพยากรที่ดี
mhr

3

ฉันพบว่ารหัสของไลบรารีที่มาพร้อมกับภาษาการเขียนโปรแกรมที่คุณเลือกมักจะเป็นการเริ่มต้นที่ดีในการดูว่าอะไรที่คิดว่าเป็นแนวปฏิบัติที่ดีที่สุดและรูปแบบการเข้ารหัสที่ดี

แม้ว่าคุณไม่ต้องการเริ่มต้นด้วยสถานที่ต่าง ๆ เช่นการจัดเรียงอัลกอริทึมหรือคลาสคอนเทนเนอร์ที่ซับซ้อน

อีกสถานที่สำหรับข้อมูลเชิงลึกที่น่าสนใจในการเขียนโค้ดคือ Project Euler ( http://projecteuler.net/ ) ข้อเสียเล็กน้อยที่นั่น: คุณต้องแก้ปัญหาก่อนเพื่อเข้าใช้งานฟอรัมที่ผู้อื่นโพสต์วิธีแก้ไขปัญหาของพวกเขา (ความท้าทายที่น่าสนใจสำหรับประสบการณ์ทุกระดับ) แต่เมื่อเสร็จแล้วคุณจะพบตัวอย่างสำหรับภาษาการเขียนโปรแกรมที่สำคัญเกือบทั้งหมด และเนื่องจากคุณได้แก้ไขปัญหาไปแล้วมันจะช่วยให้คุณเข้าใจรหัสประชาชนอื่น ๆ รวมถึงคุณจะได้เห็นรหัสภาษาที่คุณยังไม่รู้ แต่อาจพบว่าน่าสนใจ


3

ฉันชอบอ่านรหัสที่สวยงามจริงๆ มันมีตัวอย่างโค้ดสั้น ๆ แต่ดีมากพร้อมคำอธิบายโดยละเอียด

... นักวิทยาศาสตร์คอมพิวเตอร์ชั้นนำเสนอกรณีศึกษาที่แสดงให้เห็นว่าพวกเขาค้นพบวิธีการแก้ปัญหาที่ผิดปกติและออกแบบมาอย่างดีเพื่อโครงการที่มีชื่อเสียง คุณจะสามารถมองข้ามไหล่ของผู้เชี่ยวชาญด้านการเข้ารหัสและการออกแบบที่สำคัญเพื่อดูปัญหาผ่านสายตาของพวกเขา

... ผู้เขียนคิดเสียงดังขณะทำงานผ่านสถาปัตยกรรมของโครงการการแลกเปลี่ยนที่เกิดขึ้นในการก่อสร้างและเมื่อมีความสำคัญต่อการละเมิดกฎ

หนังสือเล่มนี้ประกอบด้วยบทที่ 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 ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.