Подтвердить что ты не робот

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

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

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

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

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

Спасибо заранее!


UPDATE. Мне нужны некоторые входы в плагины eclipse, которые могут помочь мне получить диаграмму обзора/класса библиотеки.

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

С уважением.

Ответ 3

Инструменты, такие как 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

Ответ 4

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

Ответ 5

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