Как вы быстро узнаете иерархию классов?
Что-то, что мне не нравится в программировании, - это изучение нового 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, и я использую, чтобы обмениваться этим набором тестов с моими сотрудниками.