Как понять проекты/библиотеки С открытым исходным кодом?

Существует немного проектов/API/библиотек с открытым исходным кодом, которые мы используем в нашем проекте (Spring, Struts, iBatis и т.д.) и я хочу понять их дизайн и как они работают внутренне.

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

Проблемы, с которыми я сталкиваюсь:

  1. Нахождение класса записи библиотеки. Есть ли какой-либо способ, которым я могу знать класс записи для библиотеки - что-то, что ударяет целый API?
  2. Инструменты/Плагины для использования в Eclipse для получения обзора дизайна библиотеки. При прохождении через каждого класса библиотеки, может быть очень грандиозная задача. Есть ли любой инструмент, который требуется рекомендовать, который может генерировать диаграммы классов API в Eclipse.

Заранее спасибо!!


ОБНОВЛЕНИЕ: Мне нужны некоторые исходные данные на плагинах затмения, которые могут помочь мне в получении обзора/диаграммы классов библиотеки

13
задан peakit 31 July 2010 в 14:55
поделиться

5 ответов

Я всегда использую для этого одну и ту же стратегию: я никогда не пытаюсь «понять» кодовую базу в целом и обычно стараюсь следить за потоком запросов. Я прочитал достаточно документации, чтобы определить, что необходимо для использования приложения, и я прочитал тот код (весь исходный код должен быть загружен в вашу среду IDE).

Например, в struts вы будете устанавливать фильтр сервлетов в web.xml. Начните читать фильтр и следуйте по пути, по которому один запрос проходит через ваш стек.

Точно так же для spring есть две основные точки входа, фильтр и getBean, обе из которых упоминаются в начале документации. Прочтите эти два.

Для обоих этих случаев вы очень быстро найдете один или два класса, которые представляют «ядро» фреймворка. Прочтите их очень хорошо и позвольте реальным вариантам использования и потребностям стимулировать ваше дальнейшее исследование.

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

8
ответ дан 2 December 2019 в 00:45
поделиться

Хороший вопрос !!!, что я сделал, особенно в случае Spring, помимо ознакомления с документацией и их API, - это прикрепил исходники проекта к моему проекту на Eclipse , таким образом я могу перемещаться по исходному коду, а не только по API. Это было весьма полезно, особенно в случае проекта Spring-Security, были некоторые концепции, которые я просто не мог понять, пока не изучил исходный код.

Это одно из преимуществ использования библиотек с открытым исходным кодом.

С уважением.

4
ответ дан 2 December 2019 в 00:45
поделиться

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

0
ответ дан 2 December 2019 в 00:45
поделиться

Большинство API не имеют класса с главным методом; они выполняются в веб-сервере и вызываются самим сервером. Если только они не работают как собственный сервер, у них не будет главного метода.

0
ответ дан 2 December 2019 в 00:45
поделиться

Инструменты, такие как Structure101 ( http://www.headwaysoftware.com/products/structure101/index.php ) и Lattix ( http: // www .lattix.com / ) позволяет анализировать код и создавать диаграммы архитектуры / матрицы зависимостей.

Это не совсем диаграмма классов - основное внимание уделяется слоям. Таким образом, точкой входа обычно является самый верхний уровень.

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

См. Онлайн-демонстрацию S101: http://www.structure101.com/java/ Это, например, архитектура проекта Sonar: http://www.structure101.com/java/tracker/sonar/1.11.1/arch.html

1
ответ дан 2 December 2019 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: