Куди ви йдете, щоб прочитати хороші приклади вихідного коду? [зачинено]


53

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


Це було запропоновано на StackOverflow: stackoverflow.com/questions/3083525 / ...
nikie

3
Я просто оглядаюсь старий код.
Павло

Павло, це не допоможе ОП? Очевидно, вони не мають гарного коду, про який вже писали в минулому. sheesh.
нар.

2
@junky сподіваємось, що у них є почуття гумору :)
Конрад Моравський

це питання, яке я збирався задати, але його щастя, що я знайшов його. Я думав, що це лише моя проблема, що я не знаю, де знайти коди
Dhananjay

Відповіді:


30

Ви можете переглядати проекти з відкритим кодом на сайтах сховищ, таких як GitHub , Codeplex , Google Code або BitBucket . Ви знайдете проекти різного рівня складності, тож ви маєте змогу знайти те, що вас обох цікавить і спочатку не надто сильно заходить над головою.

Ще один варіант - це публікації щотижневих джерел коду Скотта Хензельмана .

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

Погляд на купу чужого коду може залякати, тому почніть з mainфункції (або еквівалента) і пропрацюйте свій шлях звідти.


3
-1: новачок не може визначити між хорошим і поганим кодом, тому проекти "перегляду" не допоможуть. Ви начебто висвітлювали це, рекомендуючи «усталені» проекти, але я бачив жахливий код у проектах, про які ми всі чули. Я не маю кращої відповіді. Насправді це складне запитання, потрібна відповідь, що відповідає рівню кваліфікації, інтересам особи та відфільтрована за знаннями наставника.
Кріс

1
@Cris Я не погоджуюся, але зазначу, що з читання поганого коду можна також багато чого навчитися. Можливо, читання та дотримання поганого коду ще складніше, ніж занурення у правильно організований проект. (І це ще до того, як ми намагатимемося зрозуміти, що таке "хороший" код. :))
Адам Лір

1
досить правда. Але для більшості з нас, що не є геніями, самоосвіта має обмеження. Більшість початківців (у всіх областях) необхідно вплив на «добре» , щоб отримати відчуття того , що це добре. І "Інтернет" - це всесвітній звук "Я добре!", Що не допомагає.
Кріс

10

Дуже мало людей пишуть хороший вихідний код при першій спробі. Хороший вихідний код часто виробляється рядом змін. Таким чином, якщо ви можете знайти вихідний код, який перевіряли кілька разів та фіксували кілька разів, ви, мабуть, у кращому місці. Деякі проекти з відкритим кодом (а також деякі з них) особливо добре переглядаються. Код від компаній, які мають обов'язкові цикли перегляду (наприклад, Google, але є багато інших), може відповідати законопроекту.

Попри це, я не впевнений, що вашою метою має бути пошук "чудового коду". Слід переглянути різні стилі коду (наприклад, написані вашими колегами) та навчитися визначати добрі та погані моменти. Чим більше поганих моментів ви виявите, тим більше ви будете прагнути покращити свій код і знати, як.

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

Після декількох разів ви дезорієнтуєтесь на 100-рядкових функціях з десятьма рівнями відступів і залежностей від глобальних точок, і кілька разів, коли ви будете пропускати через добре розкладений код, ви вдосконалите власне програмування.


4

Замість пошуку чудових кодів загляньте в загальні книги з програмування.

наприклад, повний код, написання твердого коду, шаблони дизайну (я впевнений, що в іншому запитанні та відповіді на цьому сайті є багато інших книг)

Ці книги описують філософію, яку вважають хорошим кодом. Читання, продуктивність, ремонтопридатність, виявлення помилок тощо.

Що служить ще кращими ресурсами та ефективнішими, ніж намагатися зрозуміти, чого намагається досягти автор.

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


1
Я б хотів зазначити "Чистий код" як хороший ресурс.
1313

3

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

Хоча ви не хочете починати з таких місць, як алгоритми сортування або складні класи контейнерів.

Ще одне місце для цікавого розуміння написання коду - Project Euler ( http://projecteuler.net/ ). Незначний недолік там: спочатку потрібно вирішити проблему, щоб отримати доступ до форуму, де інші розмістили свої рішення (цікаві виклики для всіх рівнів досвіду). Але після закінчення ви знайдете приклади майже для всіх основних мов програмування. А оскільки ви вже вирішили цю проблему, це допоможе вам зрозуміти код інших народів. Окрім того, ви зможете побачити код мов, яких ви ще не знаєте, але може здатися цікавим.


3

Мені дуже подобалося читати Beautiful Code . Він має короткі, але дуже приємні приклади коду з детальними поясненнями.

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

... Автори думають вголос, коли вони працюють над архітектурою свого проекту, компромісами, які були зроблені при його будівництві, і коли важливо було порушувати правила.

Ця книга містить 33 глави, внесені Брайаном Керніган, КарлФогелем, Джоном Бентлі, Тімом Бреєм, Елліоттою Расті Гарольдом, Майклом Пірсом, Альберто Савойя, Чарльзом Петцольдом, Дугласом Крокфордом, Генрі С. Уорреном, молодшим, Ашишем Гулхаті, Лінкольном Штейн, Джимом Кентом , Джек Донгарра та Пьотр Люшчек, Адам Колава, Грег Кроах-Хартман, Діомідіс Шпінеліс, ЕндрюКулінг, Тревіс Е. Оліфант, Рональд Мак, Роджеріо Атем де Карвальо та Рафаель Моннерат, Брайан Кантрілл, Джефф Дін та Санджай Гемантон, Саймон Кемтонб, Саймон, Джейманб, Джоймон, Джеймтон Джоймон, Саймон, Джейманб, Сімон Отт і Дуглас Шмідт, Ендрю Патцер, Андреас Зеллер, Юкіхіро Мацумото, Арун Мехта, ТВ Раман, Лора Вінгер, Крістофер Сейвальд, Брайан Хейс ...

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