รหัสโอเพ่นซอร์สที่ดีที่สุดที่คุณเคยเห็นคืออะไร [ปิด]


19

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

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

เห็นได้ชัดว่านี่เป็นคำถามปลายเปิดดังนั้นฉันจะทิ้งคำถามไว้สักครู่แล้วดูว่าเราได้รับคำตอบประเภทใด

ขอบคุณ!

แก้ไข: สำหรับ "ดีที่สุด" ฉันคิดถึงโค้ดที่เป็นไปตามสำนวนในภาษาหรือแพลตฟอร์มที่กำหนดรวมถึงส่วนที่ทำให้โค้ด "มืออาชีพ" - เอกสารที่ดีชุดทดสอบ ฯลฯ รหัสที่รัดกุม แต่ ไม่ฉลาดเกินไปที่จะชอบรหัสสั้น ๆ หรือช่างพูดมาก


4
คำจำกัดความเฉพาะของ "ดีที่สุด" ในใจคืออะไร?

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

+1 สำหรับคำถามที่ดี ฉันแนะนำให้คุณตัดมันด้วยภาษา / เทคโนโลยีเฉพาะ การเปรียบเทียบ C สำหรับ Linux กับ Java สำหรับไดรเวอร์ฐานข้อมูลเป็นแนวคิดที่ไม่สอดคล้องกัน
Fanatic23

มันจะเป็นประโยชน์อย่างมากกับผู้อื่นที่อ่านคำถามหากคุณแก้ไขคำชี้แจงนั้น :)
Michael K

คำตอบ:


14

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

การระคายเคืองหลักสำหรับฉันคือมักจะมีความคิดเห็นน้อยมากความคิดเห็นเพียงอย่างเดียวคือการแจ้งเตือนลิขสิทธิ์ที่ยาวนานและถูกกฎหมาย

เคอร์เนล linux เป็นตัวอย่างที่ไฟล์มักจะไม่ได้มีความคิดเห็นในพวกเขาบอกว่าสิ่งที่พวกเขาให้บริการ (เช่นไดรเวอร์สำหรับ XYZ อย่างน้อยก็จะบอกฉันว่าฉันอยู่ในสถานที่ที่เหมาะสม)

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

อาจจะมีคุณธรรมคือ: บอกฉันว่าคุณกำลังทำอะไรอยู่อย่าทำให้ฉันคิดออก

ฉันไม่พบรหัสโอเพนซอร์สใด ๆ ที่ทำได้ดี เท่าที่หาโอเพนซอร์ซเป็นวิธีการเรียนรู้วิธีปฏิบัติในการเขียนโปรแกรมที่ดีคำแนะนำของฉันคือ: อย่า


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

@ pierre303 - ฉันก่อตั้งและดูแล NoRMproject.org ซึ่งเป็นหนึ่งในสิ่งสำคัญที่ฉันทำคือการเขียนความคิดเห็นเมื่อฉันเขียนรหัสและสิ่งนี้จะช่วย ฉันคิดว่าผู้มีส่วนร่วมจะทำงานในส่วนที่ผู้นำเน้น ในกรณีของ NoRM นั่นคือรหัสการทดสอบความคิดเห็นและรหัส (ถึง c #) ฉันคิดว่าเรามี codebase ที่เป็นมืออาชีพและสามารถดูแลรักษาได้เพราะมัน
Andrew Theken

ฉันเห็นด้วยว่าควรเขียนความคิดเห็นขณะที่กำลังเขียนโค้ด (ฉันยังทำสิ่งนี้ในรหัสของฉันเองส่วนใหญ่เป็นเพราะฉันเห็นแก่ตัวและช่วยฉันในการเขียนคำบรรยายก่อนบล็อกของรหัส - มันชัดเจนในใจของตัวเองสิ่งที่ฉันต้องทำก่อนที่ฉันจะทำจริง)
quick_now

เตือนฉันถึงคำพูดตลก ๆ ที่ครั้งหนึ่งฉันเคยชน: "ถ้าฉันมีเวลาเขียนยาก ๆ พวกเขาควรมีเวลาอ่านยาก"
เดนิสเดอเบอร์นาดี

+1, @quickly_now - คุณคิดว่ารหัสควรมีการวางแผนที่ดีมีการทดสอบที่ดีและมีความคิดเห็นดีในขณะนี้ ! คุณเป็นดาวเคราะห์บ้าคลั่งประเภทใด

5

ฉันเคยได้ยินสิ่งที่ดีมากเกี่ยวกับรหัสฐานSqlite

จากน้อยที่ฉันได้ดูมันดูสะอาดมาก


5
นอกจากนี้ยังมีชุดทดสอบที่กว้างขวางทำให้เป็นรูปแบบการศึกษาสำหรับการทดสอบซอฟต์แวร์
Robert Harvey

ฉันหวังว่ามันจะมีอินเตอร์เฟส C ++: /
Matthieu M.

5

Donald Knuth เขียนสองโปรแกรมเพื่อช่วยให้เขาเรียงสูตรทางคณิตศาสตร์ของเขาในหนังสือของเขาได้ดีกว่าผู้จัดพิมพ์ของเขา

โปรแกรมทั้งสองนี้ (ในรุ่นสุดท้าย) เขียนโดยใช้Literate Programmingซึ่งอนุญาตให้สร้างซอร์สโค้ดรุ่นเรียงพิมพ์และได้รับการตีพิมพ์เป็นหนังสือ เหล่านี้เป็นเพียงโปรแกรมที่ดีที่สุดที่ฉันเคยอ่าน!

  • "คอมพิวเตอร์และการเรียงพิมพ์, เล่ม B: TeX: โปรแกรม"
  • "คอมพิวเตอร์และการเรียงพิมพ์, เล่ม D: Metafont: โปรแกรม"

พวกเขาไม่พร้อมสำหรับการอ่านออนไลน์ แต่ Amazon ช่วยให้คุณ "ดูข้างใน" หนังสือ Metafont ที่http://www.amazon.com/Computers-Typesetting-D-Metafont-Program/dp/0201134381/

คำเตือน: มันเป็นของหนักซึ่งเป็นสาเหตุที่หนังสือแต่ละเล่มวิ่งที่ 600 หน้า


1
หมายเหตุ: เป็นรุ่นเรียงพิมพ์ที่ไม่พร้อมใช้งานออนไลน์ แหล่งข้อมูลพร้อมใช้งานเต็มรูปแบบและสามารถใช้ความพยายามเล็กน้อยเพื่อสร้างรุ่นที่พิมพ์ออกมา

4

หนังสือBeautiful Codeพยายามตอบคำถามนี้ด้วยตัวอย่างหลาย ๆ อย่างที่ผู้มีส่วนร่วมคิดว่าเป็นแบบอย่างของโค้ดที่สวยงามจากโครงการโอเพ่นซอร์ส
ข้อความแสดงแทน


4
หนังสือคุ้มค่าที่จะเช็คเอาท์ไหม
Oliver Weiler

นี่ไม่ใช่รหัสโอเพนซอร์ซ "ในโลกแห่งความจริง" แต่ประการใด คำตอบนี้เป็นการโกง! : P
Noldorin

1
ฉันเป็นเจ้าของมันไม่ประทับใจ บทส่วนใหญ่น่าเบื่อ แต่มีไฮไลท์อยู่สองสาม - อธิบายแผนที่ / ย่อถ้าฉันจำได้อย่างถูกต้อง
Martin Wickman

4

CodeIgniter

โค้ดซอร์สโค้ดที่สะอาดและดีที่สุดบางส่วนที่ฉันเคยเห็นจากโปรเจค OS


1
php & cleanest?
Kugel

1
@Kugel: ใช่ทั้งคู่
Josh K

เพิ่งได้ดูซอร์สโค้ดของ CodeIgniter และมันดูมีโครงสร้างและสะอาดมาก ฉันคิดว่าสวยงามเท่าที่คุณจะได้รับใน PHP :) และฉันมักจะชอบอารมณ์ขันในซอร์สโค้ด: "// ยังไม่มีการระบุฐานข้อมูลหรือไม่เอาชนะพวกเขาอย่างไม่มีสติ ... if (! isset ($ params ['dbdriver']) ... ... "
Bjarke Freund-Hansen

2
ฉันแอบดูซอร์สโค้ดและต้องยอมรับว่ามันมีเอกสารที่ดีและง่ายต่อการติดตามและฉันไม่ได้คาดหวังจาก OS PHP
OnesimusUnbound

2
กรอบการทำงานที่ยอดเยี่ยมอีกอย่างหนึ่งของ PHP PHP คือ fuelphp ( fuelphp.com ) ซึ่งมีการจัดทำเป็นเอกสารอย่างเรียบร้อยและใช้การตั้งชื่อแบบแผนที่ไม่ทำให้คุณดึงผมออกมา นั่นเป็นเพียงการพิสูจน์ว่าไม่ใช่ PHP ที่จะตำหนิรหัสสปาเก็ตตี้ แต่โดยทั่วไปแล้วคนเขียนโค้ด
Michael JV

3

ฉันได้เห็น 2 โครงการที่มีโครงสร้างดีมาก:

  1. Django
  2. โครงการ Chromium

โดยเฉพาะอย่างยิ่งสิ่งที่สองนั้นน่าสนใจมากโดยอิงจากบางสิ่ง:

  • วิธีใช้กระบวนการสำหรับหลาย ๆ สิ่ง (แท็บปลั๊กอิน) และวิธีการรวมเข้าด้วยกัน
  • หลายแพลตฟอร์มพร้อม GUI พื้นฐานสำหรับ Windows, Mac, Linux
  • บูรณาการเว็บชุด

ฉันก็ได้ยินว่า Postgre เขียนอย่างหมดจด (ตรงข้ามกับ MySql) แต่ฉันไม่ได้อ่านด้วยตัวเอง


1
+1 สำหรับรหัส PostgreSQL มันสะอาดและอ่านง่ายมาก
เดนิสเดอเบอร์นาดี

2

บางคนบอกว่ารหัส C สำหรับ Linux Kernelนั้นค่อนข้างดี

(ไม่ใช่ว่าฉันเข้าใจสิ่งนั้น! มันอาจเป็นโครงการ C โอเพนซอร์ซที่เขียนได้ดีที่สุด)


1
สำหรับรหัสที่ดีที่สุดมันยอดเยี่ยมมาก สำหรับการอ่านไม่ค่อยดีในประสบการณ์ของฉัน แน่นอนฉันยังไม่ได้เขียนอะไรเลยแค่อ่านมัน ...
Michael K

1
ใช่จริง น่าเสียดายที่คำถามไม่ได้นิยามว่า "ดีที่สุด" ดังนั้นฉันจึงใช้คำจำกัดความของตัวเอง :)
Noldorin

2

ฉันพบว่าซอร์สโค้ดLLVMนั้นสามารถอ่านได้มาก ฉันค่อนข้างมั่นใจว่า C ++ ที่สะอาดที่สุดที่ฉันเคยเห็น หากคุณไม่คุ้นเคยกับมันก็เป็นเครื่องมือสร้างคอมไพเลอร์

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

มันเป็นโครงการที่ค่อนข้างใหญ่ดังนั้นอย่าคาดหวังว่าจะสามารถเข้าใจได้อย่างรวดเร็วว่าทุกอย่างทำงานอย่างไร แต่มันก็ค่อนข้างง่ายที่จะได้ภาพรวมระดับสูง


1

มันไม่ใช่โครงการขนาดใหญ่ แต่SubSonic ORMนั้นง่ายมากสำหรับฉันที่จะแฮ็ค มันเป็นโครงการโอเพ่นซอร์สจริงตัวแรกที่ฉันสามารถแก้ไขได้อย่างที่ฉันต้องการ คนอื่น ๆ ส่วนใหญ่ที่ฉันลงเอยดูแหล่งที่มาและกระแทกหัวของฉันบนผนัง ฉันมีบางส่วนที่สนับสนุน PostgreSQL (อ้างอิงจากสิ่งที่ผู้ให้บริการ SQL Server) ภายในไม่กี่ชั่วโมง มันเป็นโครงการที่ดีที่สุดที่ฉันเคยเห็นมา ... แม้ว่าจะไม่ได้บอกว่าฉันได้ดูโครงการโอเพ่นซอร์สมากมาย


0

ตัวอย่างแรกอย่างง่าย: รหัสสำหรับระบบการจัดการเหตุการณ์ zope.event ฉันใช้ระบบกิจกรรมอื่นที่ส่งเหตุการณ์ให้ผู้ฟังที่แตกต่างกัน เมื่อฉันเห็นรหัส zope.event มันเป็นเวลาของ facepalm เมื่อฉันตระหนักว่าบางสิ่งง่าย ๆ

มันเขียนใน Python และนี่คือรหัสที่ครบถ้วน

subscribers = []

def notify(event):
    """ Notify all subscribers of ``event``.
    """
    for subscriber in subscribers:
        subscriber(event)

ในการเพิ่มผู้สมัครสมาชิกคุณทำสิ่งนี้:

from zope.event import subscribers
subscribers.add(MySubscriber())

ตัวอย่างที่ดีที่สุดของ KISS ที่ฉันเคยเห็น

จากนั้นเป็นตัวอย่างที่ซับซ้อนมากขึ้น: ฐานรหัสอังคารนั้นดีมากและอ่านง่ายแม้ว่ามันจะใช้ Hacks Python ที่ฉลาด เช่นเดียวกันกับโค้ด Grok เกือบทั้งหมดซึ่งสร้างขึ้นโดยใช้ Martian


3
ฉันไม่เข้าใจสิ่งที่ดีกับรหัสนี้ ฉันไม่รู้จักหลาม แต่ฉันเห็นเพียงการใช้รูปแบบผู้สังเกตการณ์อย่างง่ายที่นี่เท่านั้น
barjak

คุณเปรียบเทียบกับระบบกิจกรรมอื่น ๆ หรือไม่ สำหรับความเรียบง่ายใช้เวลาอีกเช่นงูหลาม: pypi.python.org/pypi/pyjon.events/1.1.1
Lennart Regebro

1
สวยงาม - ฉันเขียนสิ่งที่คล้ายกันมากในจาวาสคริปต์ ฉันเดาว่าฉันฉลาด ;)
Michael K

เพียงเพราะมีระบบเหตุการณ์ที่แย่กว่านั้นไม่ได้หมายความว่านี่เป็นโค้ดที่ยอดเยี่ยม ฉันเห็นรหัสนี้ในภาษาต่างๆมากมาย และที่สำคัญฉันเห็นการใช้งานที่ปลอดภัย
back2dos

@ back2dos: นี่เป็นประเภทที่ปลอดภัย
Lennart Regebro

0

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

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

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