Який найкращий вихідний код C ++ читати для початківця? [зачинено]


25

Я намагаюся вдосконалити свою техніку кодування c ++, читаючи вихідний код c ++. Який проект з відкритим кодом ви б рекомендували? Чи хороший код бібліотек Boost C ++ ?


11
Чому закриваються голоси? Питання чітке і конкретне.
Неманья Трифунович

Впровадження STL
dukeofgaming

12
@dukeofgaming: ви забули тег "іронічний".
Док Браун

1
Я думаю, що вихідний код підвищення не буде такою доброю ідеєю для початківця. Ви, ймовірно, потопите в шаблонах та техніках SFNINAE, які ще не розумієте їх роботи та причини.
Кріс каже, що повернеться до Моніки

7
Близькі голоси тому, що це питання, хоч і конкретно, не є конструктивним. Це просто призведе до списку проекту кожного, де жодна відповідь не може бути "відповіддю". Детальніше за цим див . FAQ .
Вальтер

Відповіді:


27

Я рекомендую будь-який код C ++ з відкритим кодом з відкритим кодом, такий як:

Переваги використання коду Google:

  • Він написаний на високих стандартах і проходить рецензування (на відміну від деякого відкритого коду).
  • Він має гарну документацію для розробників (що полегшує пошук і розуміння).
  • Він використовує деякі помірно вдосконалені методи C ++ (і тому корисний для навчання).
  • Це, мабуть, простіше зрозуміти, ніж Boost, тому що він не так сильно покладається на розширене метапрограмування шаблонів та метапрограмування препроцесорів і не обтяжується настільки незліченною кількістю хак-компіляторів компіляторів та спеціальних випадків.

Керівництво ++ Style Google C , що Google в C ++ код використовує , як правило , добре, але у нього є деякі досить незвичайні біти (наприклад, деякі з них керівних принципів присвоєння імен або їх забороняючи виключення), так що майте на увазі , що їх C ++ код буде відрізнятися в цих відносинах від що ти побачиш у полі.


9

Я б не рекомендував читати базу коду. Я рекомендую прочитати C ++ FAQS . Також є відмінна книга, яка виходить разом із сайтом. Найкращий спосіб вдосконалити свої навички кодування на C ++.


13
-1: Я дуже не згоден. Читання коду інших людей є дуже важливою частиною вдосконалення навичок кодування. Однак виправлення помилок у цьому коді ще краще.
Ян Худек

6
@Jan Повна угода від мене. Однак більшість C ++ вихідного коду висмоктує та використовує всі види поганих моделей, які б навчали поганих методик. Чи знаєте ви про хороший проект OSS, який може послужити вступним читанням?
Конрад Рудольф

Я мав на увазі це: amazon.com/FAQs-2nd-Marshall-P-Cline/dp/0201309831/…, але я можу побачити, що є й інші книги.
Оноріо Катенац

6

Читання існуючого чистого коду C ++ - це чудовий спосіб вивчити мову.

Наприклад, код у наборі інструментів OpenFST дуже чистий. Він читабельний і використовує дещо вдосконалені функції, не переходячи за борт.

З іншого боку, Boost може бути важко читати, почасти тому, що вони використовують C ++ хитрощі, які важко зрозуміти, і тому, що вони часто посипають код різними способами вирішення для різних версій компілятора.


6

Я б запропонував прочитати « Ефективний C ++ » Скотта Мейєрса та скористатись пропозиціями, які він має у маленьких іграшкових програмах.


2
На маленьких іграшкових програмах ви нічого не навчитесь. Потрібно писати програми, які вирішують актуальні проблеми. Вони не повинні бути великими, вам не вдасться самостійно писати великі програми, але вони не повинні бути лише іграшками.
Ян Худек

@JanHudec: Те, що ви описуєте, - це те, що я називаю іграшковими програмами : фрагмент коду, який вирішує одну проблему. Так, наприклад, алгоритм Runge-Kutta був би "іграшковою програмою", тоді як повноцінного моделювання N-тіла не було б.
Сардатріон

2
Це обидва "іграшкові програми". Оскільки проблеми є надуманими прикладами проблеми, якщо ви не робите чисельне моделювання, і більшість програмістів цього не роблять. Актуальна проблема - це те, що ви або хтось, кого ви знаєте, насправді використовуватимете. Ймовірно, буде GUI або, принаймні, досить складний розбір файлів командного рядка та маніпулювання файлами, або підключення до мережі та використання деяких існуючих бібліотек і не матиме нетривіальних алгоритмів, тому що 99% програм там немає.
Ян Худек

1
@JanHudec, ти кажеш, що людина нічого не вчиться, працюючи спочатку з невеликими обмеженими проблемами? Якщо програмісти стрибають безпосередньо у великі та складні проблеми, не вивчаючи хоча б якихось основних принципів та деяких основних мовних ідіом, ось так ми закінчуємо ці величезні програми «Великий бал грязі».
Оноріо Катенац

3
Я не впевнений, чи відповідає це питання, але кожен програміст C ++ повинен прочитати цю книгу (та її продовження.)
Gort the Robot

2

Спробуйте прочитати щось, що існує роками і має великі розміри. Мине кілька місяців, щоб почати розуміти код і почати щось робити в ньому.

Firefox, Thunderbird, OpenOffice.org, LibreOffice приходять до тями. Має бути ще багато подібних. Ці проекти працюють на багатьох операційних системах та апаратних платформах. Крім того, вони повинні оцінювати читабельність. Це могли б ви, якщо ви шукаєте методи.


0

Навіть краще, ніж читати код, було б працювати з цим кодом у формі виправлення помилок та додавання невеликих удосконалень тут і там. Виберіть якусь програму, бажано ту, яку ви використовуєте, підпишіться на список розсилки, починайте їх трекер помилок і спробуйте діагностувати деякі помилки. Запитайте у списку розсилки, чи знаходите ви рішення для чогось, розумного чи коли ви застрягли. Це дасть вам певні цілі, читаючи код, змусить вас по-справжньому зрозуміти і це те, чим ви будете займатися в будь-якій роботі.

Ви можете подивитися якийсь додаток KDE. Більшість написані на C ++, і ви можете почати спочатку з меншої.


-3

Так, код бібліотек Boost C ++ - це чудовий ресурс, з якого можна дізнатися, якщо не один із найкращих на планеті. Однак для початківців навчання за допомогою коду Boost може зробити криву навчання дуже крутою. Якщо ви дійсно хочете спробувати прочитати Boost, почніть з невеликих і простих бібліотек, таких як Boost.Array .


2
Я думаю, що було б як запропонувати хороший спосіб навчитися кататися на лижах - купити удари по схилах з подвійним чорним діамантом.
Gort the Robot

@StevenBurnap, будь ласка, прочитайте мою відповідь ще раз і вкажіть ту смішну пропозицію, яку я зробив. Зупиніть, будь ласка, і вкажіть кращу всебічну бібліотеку, яку варто прочитати початківцям. Ви зробите висновок, що найкращі приклади, які підходять початківцям, - це книга для початківців.
mloskot

-3

Спробуйте прочитати PDF C ++. Це безкоштовно, і я навчився C ++ з нього, навіть не маючи іншого досвіду програмування, і мені всього 14. Дивовижно.


3
Чи можете ви додати посилання на якийсь ресурс, пов'язаний з цими проектами?
Джорджіо

3
Який C ++ PDF ви маєте на увазі?
Martijn Pieters
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.