Изучение стандартных библиотечных источников - PullRequest
3 голосов
/ 03 марта 2009

Как изучать код библиотек с открытым исходным кодом, особенно стандартных библиотек? Кодовая база часто обширна и трудна для навигации. Как найти определение функции или класса?

Поиск по загруженным исходным файлам? Нужно ли для этого cvs / svn? Может быть, веб-поиск? Должен ли я просто знать структуру стандартной библиотеки? Есть ли какая-либо ссылка на это? Или у некоторых IDE есть такие функции? Или какие-то другие инструменты? Как сделать это эффективно без одного? Каковы лучшие практики делать это в любых библиотеках с открытым исходным кодом? Есть ли соглашение о том, как манипулировать источниками в системах Linux / Unix? Каковы различия для конкретных языков программирования?

Широкое представление предмета очень рекомендуется. Я отмечаю эту «вики сообщества», чтобы каждый мог перефразировать и расширить мои неуклюжие формулировки!

Обновление : Возможно, проблема не была достаточно ясной. То, что я хочу, это просмотреть только исходный код некоторого определенного библиотечного класса или функции. И проблема в основном в организации работы и удобстве использования - как мне ориентироваться в огромной куче источников, чтобы найти вещь, может быть, есть конкретные инструменты или подходы? Такое ощущение, что давно должны были быть какие-то решения для этого.

Ответы [ 5 ]

1 голос
/ 03 марта 2009

Следует отметить, что стандартные библиотеки иногда (часто?) Оптимизируются больше, чем это хорошо для большей части производственного кода.

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

Может быть, это не лучшая учеба для начинающих.

Просто мысль.

0 голосов
/ 27 ноября 2009

Что-то, что я делаю время от времени:

apt-get source foo

Затем новый проект C ++ (или любой другой) в Eclipse и импорт.

=> Ух ты! Просматривается! (используйте F3)

0 голосов
/ 03 марта 2009

Доступен исходный код стандартных библиотек Java. Для начинающего Java-программиста это может быть отличным чтением. Особенно рамки Коллекции - хорошее место для начала. Возьмем, к примеру, реализацию ArrayList и узнаем, как можно реализовать массив с изменяемым размером в Java. Большая часть источника содержит даже полезные комментарии.

Лучшее, что можно прочитать, это, чье предназначение вы можете понять сразу. Начните с простых частей и попробуйте выполнить все шаги, которые скрыты за этим единственным вызовом, который вы делаете из своего собственного кода.

0 голосов
/ 03 марта 2009

Ого, это большой вопрос.

Краткий ответ: это зависит.

Длинный ответ: Некоторые библиотеки предоставляют документацию, а другие нет. Стандартные библиотеки обычно довольно хорошо документированы, независимо от того, включает ли выбранная вами реализация библиотеки документацию или нет. Например, вы, возможно, нашли реализацию стандартной библиотеки c без документации, но стандарт c существовал достаточно долго, чтобы были доступны сотни хороших справочников. Документация с гиперссылками - очень полезный способ изучения нового API. В любом случае, первое место, которое я бы посмотрел, - это главный сайт библиотеки

Для менее известных библиотек, в которых отсутствует документация, я считаю очень полезными два разных подхода.

Сначала это генератор документов. Почти у каждого языка, который я знаю, есть один. Он в основном анализирует исходное дерево и создает документацию (обычно в формате html или xml), которую можно использовать для изучения библиотеки. Некоторые используют специально отформатированные комментарии в коде для создания более полной документации. JavaDoc является хорошим примером этого. Генераторы документов для многих других языков заимствованы из JavaDoc.

Второй IDE с классом браузера. Они действуют как документация на лету. Некоторые отображают только интерфейс библиотеки. Другие включают описание комментариев из источника библиотеки.

Для обоих из них потребуется доступ к источнику библиотеки (который пригодится, если вы собираетесь использовать библиотеку).

Многие из этих инструментов и методов одинаково хорошо работают для закрытых / проприетарных библиотек.

0 голосов
/ 03 марта 2009

Ну, я думаю, что безумие просто заглянуть на сайт и прочитать код библиотеки. Мой подход состоит в том, чтобы искать всякий раз, когда я сталкиваюсь с необходимостью реализовать что-то самостоятельно, а затем изучать способ, которым это реализовано в этих библиотеках.

И есть также множество проектов / библиотек с отличной документацией, которые я считаю более важными для чтения, чем код. В системах на основе Unix вы часто найдете ценную информацию на страницах руководства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...