Как вы быстро узнаете иерархию классов?

Что-то, что мне не нравится в программировании, - это изучение нового API. Например, сейчас я пытаюсь изучить Windows Identity Foundation. Это расстраивает, потому что я собираюсь потратить большую часть времени на изучение того, как работают несколько классов, и на самом деле писать несколько строк кода.

В .NET существует так много типов, что я, кажется, трачу больше времени на поиск в msdn для класса, чем написание кода. Он также прерывает мой рабочий процесс, пока я работаю, потому что мне нужно набрать немного, чем что-то посмотреть.

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

Мне интересно узнать, есть ли у кого-нибудь возможность запомнить (или повысить эффективность) эти иерархии объектных моделей?

Ответы

Ответ 1

Я тоже был на вашем месте, когда я изучил Java и его классы Collection (или SWING, или AWT, если на то пошло).

Вот несколько шагов, которые я сделал, и результат этих шагов:

  • Не удосужился делать заметки, продолжайте использовать его = > помните только самый используемый класс
  • Возьмите неорганизованные примечания = > тот же результат, помните наиболее используемый класс
  • Простые диаграммы классов = > улучшение, но неполные
  • Простые диаграммы классов, но в комплекте с подклассами, организованными для каждого компонента (пакет в Java) = > Джекпот!

Несколько советов:

  • Устранение устаревших классов
  • Найти символ для маркировки класса является потокобезопасным (поместите TS или что-то еще)
  • Вы могли бы опустить наименее используемые подклассы (возможно), когда вы соглашаетесь с вашим приключением

Пример простой диаграммы классов:

Сравните с этим (не так просто):

Надеюсь, что это поможет.

Ed

Ответ 2

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

Конечно, вам нужно знать, как организован API (или библиотека классов), и каковы его возможности, но нет смысла изучать, что такое третий параметр вызова функции X.

Ответ 3

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

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

Ответ 4

Обычно я не изучаю API так же, как пытаюсь понять широкие понятия того, что делает API, и как он это делает.

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

Да, между документами и кодом будет какое-то время назад, а по мере того, как вы будете более комфортно работать с API, вы начнете замечать шаблоны и стиль кода, а другие области API придут больше естественно, для вас (при условии, что это API для проектирования скважин:)

НТН.

Ответ 5

Черт, я просто подумал, что это я стал старше!!!

Я пишу Java-код с помощью JMS, EJB, JNDI, JDBC, JSP, Servlet, Struts, Struts, JTA, Swing, POI, GWT, GAE, JDO, IBM MQ MQ, JNI, XML, SAX, DOM, С++, WIN32, а также наши собственные библиотеки классов и, вероятно, некоторые из них, которые я не могу вспомнить.

Когда мне нужно переключаться между технологиями, очень сложно запомнить все API. Некоторые из инструментов, которые используются сейчас, настолько превосходны, что можно начать новый проект с использованием одной из новых технологий.

  • Eclipse и Visual Studio имеют Автозаполнение.
  • Google - большая помощь. Используйте его ежедневно.
  • онлайн-документация.

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

Ответ 6

Ничего особенного, чтобы предлагать здесь как ответ.

Это необходимая часть того, чтобы быть программистом. Однако вы можете выбрать, чтобы быть очень разборчивым в рамках, которые вы решили использовать.

Хорошая структура

  • легко подбирать и использовать без документации. Он просто работает так, как вы ожидаете, что он будет работать.
  • по-прежнему имеет отличную документацию, вдохновляющую пулю № 1.
  • минимализм. Наименьшее количество кода/классов/методов для выполнения заданий.

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

Ответ 7

Да, помните, что все эти API тоже меня беспокоят...

Мои 2 цента (помимо ведения онлайн-документации) составляют код тестового набора, в котором используются функции, которые я хочу изучить. Дело в том, что я считаю, что лучший способ понять некоторые API - заставить его работать, если вы просто прочитали его, вы не можете быть уверены, что поняли его правильно. И, чтобы что-то делать, вы обычно можете выбирать между частями, необходимыми для понимания (странно, что "жесткая" часть часто связана с деталями настройки) и какие части вы можете оставить на потом. Я не так давно создал новую библиотеку чертежей, и я еще не пробовал рисовать примитивы...

Я пишу этот тестовый код, как и для любых unit test в своих программах, стараюсь держать его простым и понятным. Эти тесты становятся частью моей личной онлайн-документации, и я копирую пасту и при необходимости адаптирую ее.

Очевидно, я не могу все это проверять, но некоторые типичные случаи без давления текущего проекта, как правило, очень помогают понять новый API, и я использую, чтобы обмениваться этим набором тестов с моими сотрудниками.