รหัสแหล่ง C ++ ที่ดีที่สุดในการอ่านสำหรับผู้เริ่มต้นคืออะไร [ปิด]


25

ฉันกำลังพยายามปรับปรุงเทคนิคการเข้ารหัส c ++ โดยการอ่านซอร์สโค้ด c ++ คุณจะแนะนำโครงการโอเพ่นซอร์สใด รหัสของBoost C ++ Librariesเป็นโค้ดที่ดีหรือไม่?


11
ทำไมต้องโหวตปิด คำถามนั้นชัดเจนและเป็นรูปธรรม
Nemanja Trifunovic

การใช้งาน STLs
dukeofgaming

12
@dofofgaming: คุณลืมแท็ก "แดกดัน"
Doc Brown

1
ฉันเดาว่า source code boost จะไม่ใช่ความคิดที่ดีสำหรับผู้เริ่มต้น คุณอาจจมลงในเทมเพลตและเทคนิค SFNINAE ที่คุณยังไม่เข้าใจการทำงานและเหตุผลของพวกเขา
คริสพูดว่า Reinstate Monica

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

คำตอบ:


27

ฉันขอแนะนำรหัส C ++ โอเพ่นซอร์สของ Google เช่นต่อไปนี้:

ข้อดีของการใช้รหัส Google:

  • มันเขียนถึงมาตรฐานที่สูงและได้รับการตรวจสอบโดยเพียร์
  • มันมีเอกสารสำหรับนักพัฒนาที่ดี
  • มันใช้เทคนิค C ++ ขั้นสูงพอสมควร
  • มันอาจจะง่ายกว่าที่จะเข้าใจมากกว่า Boost เพราะมันไม่ได้พึ่งพาเทมเพลต metaprogramming ขั้นสูงและmetaprogramming preprocessorและไม่ได้รับการชั่งน้ำหนักมากนักกับแฮ็คคอมไพเลอร์ที่เข้ากันได้นับไม่ถ้วนและกรณีพิเศษ

Google C คู่มือ ++ สไตล์ที่ของ Google C ++ ใช้รหัสเป็นสิ่งที่ดีโดยทั่วไป แต่จะมีบิตที่ผิดปกติบางอย่างเป็นธรรม (เช่นบางส่วนของหลักเกณฑ์การตั้งชื่อของพวกเขาหรือข้อยกเว้นไม่อนุญาตให้พวกเขา) เพื่อเก็บไว้ในใจว่า C ของพวกเขา ++ รหัสจะแตกต่างกันในการเคารพผู้ที่มาจาก สิ่งที่คุณจะเห็นในสนาม


9

ฉันจะไม่แนะนำให้อ่านฐานรหัส ฉันขอแนะนำให้อ่านC ++ คำถามที่พบบ่อย นอกจากนี้ยังมีหนังสือที่ยอดเยี่ยมที่เข้ากับเว็บไซต์ วิธีที่ดีที่สุดในการพัฒนาทักษะการเข้ารหัส C ++ ของคุณ


13
-1: ฉันไม่เห็นด้วยอย่างยิ่ง การอ่านรหัสของผู้อื่นเป็นส่วนสำคัญในการพัฒนาทักษะการเขียนโปรแกรม อย่างไรก็ตามการแก้ไขข้อบกพร่องในรหัสนั้นดียิ่งขึ้นกว่าเดิม
Jan Hudec

6
@Jan ข้อตกลงที่สมบูรณ์จากฉัน อย่างไรก็ตามซอร์สโค้ด C ++ ส่วนใหญ่จะดูดข้อมูลและใช้รูปแบบที่ไม่ดีทุกชนิดที่จะสอนเทคนิคที่ไม่ดี คุณรู้หรือไม่ว่าโครงการ OSS ที่ดีซึ่งอาจทำหน้าที่เป็นการอ่านเบื้องต้น?
Konrad Rudolph

ฉันอ้างถึงหนังสือเล่มนี้: amazon.com/FAQs-2nd-Marshall-P-Cline/dp/0201309831/แต่ฉันเห็นว่ามีหนังสือเล่มอื่นอีกด้วย
Onorio Catenacci

6

การอ่านโค้ด C ++ ที่มีอยู่เป็นวิธีที่ดีในการเรียนรู้ภาษา

โค้ดในชุดเครื่องมือOpenFSTนั้นสะอาดมากตัวอย่างเช่น สามารถอ่านได้และใช้คุณสมบัติขั้นสูงเล็กน้อยโดยไม่ต้องลงน้ำมากเกินไป

ในทางกลับกัน Boost อาจเป็นเรื่องยากที่จะอ่านส่วนหนึ่งเป็นเพราะพวกเขาใช้เทคนิค C ++ ที่ยากต่อการเข้าใจและเพราะพวกเขามักโรยโค้ดด้วยวิธีแก้ไขต่าง ๆ สำหรับคอมไพเลอร์รุ่นต่าง ๆ


6

ฉันขอแนะนำให้อ่าน " Effective C ++ " โดย Scott Meyers และใช้คำแนะนำที่เขามีในโปรแกรมของเล่นเล็ก ๆ


2
คุณจะไม่เรียนรู้อะไรเลยในโปรแกรมของเล่นเล็ก ๆ คุณต้องเขียนโปรแกรมที่แก้ปัญหาที่เกิดขึ้นจริง พวกเขาไม่จำเป็นต้องมีขนาดใหญ่คุณจะไม่สามารถเขียนโปรแกรมขนาดใหญ่เพียงอย่างเดียว แต่ต้องไม่ใช่ของเล่น
Jan Hudec

@JanHudec: สิ่งที่คุณอธิบายคือสิ่งที่ฉันเรียกโปรแกรมของเล่น : ชิ้นส่วนของรหัสที่แก้ปัญหาเดียว ตัวอย่างเช่นอัลกอริทึม Runge-Kutta จะเป็น "โปรแกรมของเล่น" ในขณะที่การจำลองร่างกาย N เต็มรูปแบบจะไม่เป็น
Sardathrion - Reinstate Monica

2
เหล่านี้เป็นทั้ง "โปรแกรมของเล่น" เนื่องจากปัญหาดังกล่าวเป็นตัวอย่างของปัญหาที่เกิดขึ้นนอกเสียจากว่าคุณกำลังทำแบบจำลองเชิงตัวเลขและโปรแกรมเมอร์ส่วนใหญ่จะไม่ทำเช่นนั้น ปัญหาที่แท้จริงคือสิ่งที่คุณหรือคนที่คุณรู้จักกำลังจะใช้งานจริง มันอาจจะมี GUI หรืออย่างน้อยค่อนข้างซับซ้อนในการแยกวิเคราะห์บรรทัดคำสั่งและจัดการไฟล์หรือเชื่อมต่อกับเครือข่ายและใช้ไลบรารีที่มีอยู่แล้วและจะไม่มีอัลกอริธึมที่ไม่สำคัญเพราะโปรแกรม 99% ไม่มี
Jan Hudec

1
@JanHudec คุณกำลังบอกว่าคนไม่เรียนรู้อะไรเลยด้วยการทำงานกับปัญหาเล็ก ๆ ที่มีข้อ จำกัด ก่อน? หากโปรแกรมเมอร์ข้ามไปยังปัญหาใหญ่และซับซ้อนโดยไม่ต้องเรียนรู้หลักการพื้นฐานอย่างน้อยและสำนวนภาษาพื้นฐานบางอย่างนี่คือวิธีที่เราจบลงด้วยแอพ "Big Ball of Mud" ขนาดใหญ่เหล่านี้
Onorio Catenacci

3
ฉันไม่แน่ใจว่าสิ่งนี้ตอบคำถามได้หรือไม่ แต่โปรแกรมเมอร์ C ++ ทุกคนควรอ่านหนังสือเล่มนั้น (และภาคต่อของมัน)
Gort the Robot

2

ลองอ่านสิ่งที่มีมานานหลายปีและมีขนาดใหญ่ จะใช้เวลาสองสามเดือนในการเริ่มทำความเข้าใจโค้ดและทำบางสิ่งในนั้น

Firefox, Thunderbird, OpenOffice.org, LibreOffice เข้ามาสู่จิตใจ ควรมีสิ่งที่คล้ายกันอีกมากมายเช่นกัน โครงการเหล่านี้ทำงานบนระบบปฏิบัติการและแพลตฟอร์มฮาร์ดแวร์มากมาย นอกจากนี้พวกเขาต้องทำคะแนนในการอ่าน สิ่งเหล่านี้คุณควรจะได้เทคนิคที่คุณมองหา


0

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

คุณสามารถดูแอปพลิเคชัน KDE บางตัวได้ ส่วนใหญ่เขียนด้วยภาษา C ++ และคุณสามารถเริ่มด้วยขนาดเล็กกว่าก่อนได้


-3

ใช่รหัสของ Boost C ++ Libraries เป็นแหล่งเรียนรู้ที่ยอดเยี่ยมหากไม่ได้เป็นหนึ่งในดีที่สุดในโลก อย่างไรก็ตามสำหรับมือใหม่การเรียนรู้จาก Boost code อาจทำให้ช่วงการเรียนรู้สูงชันมาก ถ้าคุณอยากจะลองอ่านเพิ่มเริ่มต้นกับห้องสมุดขนาดเล็กและง่ายบางอย่างเช่นBoost.Array


2
ฉันคิดว่าเป็นเหมือนการแนะนำวิธีที่ดีในการเรียนรู้การเล่นสกีคือการซื้อการตีที่ลาดเพชรสีดำคู่
Gort the Robot

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

-3

ลองอ่าน C ++ PDF ได้ฟรีและฉันเรียนรู้ C ++ จากมันแม้ว่าฉันจะไม่มีประสบการณ์การเขียนโปรแกรมอื่น ๆ และฉันก็แค่ 14. น่าทึ่ง


3
คุณสามารถเพิ่มลิงค์ไปยังแหล่งข้อมูลที่เกี่ยวข้องกับโครงการนี้ได้หรือไม่?
Giorgio

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