Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемЗахар Южин
1 JetBrains и.NET – IDEA Reloaded Дмитрий Ломов Senior Software Developer SPb JUG,
2 Что мы делаем? Наши продукты для.NET разработчиков Как мы делаем? Наша «методология» разработки А что внутри? Архитектура, OpenAPI, новые языки, плагины План
3 SPb JUG, Что мы делаем
4 SPb JUG, JetBrains ReSharper Add-On для Microsoft Visual Studio 2003 Основная функциональность IntelliJ IDEA: рефакторинги, подсветка и исправление ошибок, live templates, productivity features… - для.NET Framework 1.1 и только для C#. Большой успех Всего $149! Настоящее
5 SPb JUG, Highlight UsagesSmart completion Quick Fixes Refactorings
6 SPb JUG, Скоро ReSharper 2.0 Add-In для VS 2003: VB, ASP, кросс-языковая функциональность: рефакторинги и т.д. Add-In для VS 2005:.NET Framework 2.0 (C#, VB, ASP) Своя IDE: отладчик, удобная интеграция с VCS, … OpenAPI: вплоть до поддержки других языков (например F#)
7 SPb JUG,
8 Скоро JetBrains.NET Profiler в 1.0 – только performance profiling замедление – в 2-5 раз (ANTS – раз) удобный интерфейс: Profile with Pleasure! Следите за рекламой!
9 SPb JUG, Как мы делаем
10 SPb JUG, Цикл разработки 1.Начало: планирование, старт разработки, развал всего 2.Внутренний релиз – eating own dogs food 3.Early Access Program (EAP) public build раз в неделю или чаще 4.Стабилизация (исправляются только stopship SCRs) 5.Релиз (0 stopship SCRs) 6.Поддержка (версии x.y.k – шаги 3-5)
11 SPb JUG, EAP Closed source, open mind Регулярно обновляемые версии Не кривые, поскольку используются внутри фирмы Форум – прямой контакт с разработчиками Bug Tracker – прямой контакт с разработчиками Добро пожаловать!
12 SPb JUG, Процесс разработки(1) Команда – 7 человек Планирование – Bug Tracker Ежедневный stand-up meeting Минимум формальных правил
13 SPb JUG, Процесс разработки(2) Unit-тестирование Тесты пишут разработчики Непрерывная интеграция После каждого commitа строится полная версия программы, запускаются все тесты Тестирование производительности Нет отдела QA
14 SPb JUG, Непрерывная интеграция
15 SPb JUG, Performance Tests
16 SPb JUG,
17 А что внутри?
18 SPb JUG, Основные принципы Компонентная модель Использование мета-данных Генерация кода
19 SPb JUG, Компонентная модель(1) EditorManager IEditor EditFile(IProjectFile) static EditorManager Instance Component(Config.All) EditorManagerImpl IEditor EditFile(IProjectFile) Component(Config.STANDALONE) VSEditorManagerImpl IEditor EditFile(IProjectFile) Component(Config.VS2003) Editor.dll
20 SPb JUG, Компонентная модель(2) public static void Main() { new Shell(Config.STANDALONE, Assembly.xml);... } Shell object GetComponent(Type) static EditorManager Instance { get { return (EditorManager) Shell.ActiveShell.GetCoponent(typeof(EditorManager)); }... IEditor editor = EditorManager.Instance.EditFile(projectItem); editor.CaretModel.MoveTo(classDeclaration.StartOffset);... EditorManager.dll
21 SPb JUG, Компонентная модель(3) Компоненты разных уровней (Shell, Solution, Project) Автоматическая сериализация (XML) Возможность загрузки/выгрузки => Plugins Обширные возможности переиспользования Легко настраивается на разные «окружения» один и тот же клиентский код в IDE, VS2003, VS2005 тестовые реализации компонент ( Config.TESTS )
22 SPb JUG, Использование мета-данных Мета-данные - это удобно! При загрузке assembly автоматически добавляются Компоненты Окна (Tool Windows) Команды (Actions) Поддержка языков И проч.
23 SPb JUG, Команды (Actions) Action ShortcutMenu item IActionHandler bool Update(IDataContext) void Execute(IDataContext) 1:n IDataContext object GetData(DataConstant) DataConstant : FILE, EDITOR, PROJECT... Как узнать, активна ли команда: Контролы выдают контексты (реализуют IDataProvider ) Контекст собирается от сфокусированного контрола вверх У обработчиков вызывается Update
24 SPb JUG, Команды (2) [ActionHandler(OpenFile)] class OpenFileHandler : IActionHandler { public bool Update(IDataContext context){ return context.GetData(DataConst.FILE) != null; } public void Execute(IDataContext context){ EditorManager.Instance.EditFile( (IProjectFile) context.GetData(DataConst.FILE) ); }
25 SPb JUG, Архитектура ProjectModelDocument Синтаксическое деревоПонятия CLR (межязыковые) Program Structure Interface (PSI) Ядро РефакторингиРедактор Подсветка ошибок (демон) …
26 SPb JUG, Как добавить новый язык 1.Лексический анализатор (lexer) подсветка в редакторе 2.Синтаксический разбор, дерево Ctrl+W, keyword completion, подсветка синтаксических ошибок 3.Разрешение ссылок (resolve) поиск использований, переход на декларацию, переименование 4.Отображение в понятия CLR то же, что и в п.3 из других языков 5.Языковые вставки в другую функциональность (подсветка ошибок, рефакторинги и т.д.)
27 SPb JUG, Генерация PSI ifStatement : IF expression statement (ELSE statement )? ; IIfStatement IExpression Condition() IStatement ThenBranch() IStatement ElseBranch() void SetCondition(IExpression) void SetThenBranch(IStatement) void SetElseBranch(IStatement) IfStatementStub IExpression Condition() IStatement ThenBranch() IStatement ElseBranch() void SetCondition(IExpression) void SetThenBranch(IStatement) void SetElseBranch(IStatement) CSharpParser... IIfStatement ParseIfStatement()...
28 SPb JUG, Генерация кода Меньше рутинной работы Легко менять дизайн Генерируемый код расширяется наследованием будет лучше, когда появятся partial классы Используется не только для PSI: Типы подсвечиваемых ошибок Локализуемые строчки (resource bundle)
29 SPb JUG, JetBrains. Develop with Pleasure. JetCerveau. Développez-vous avec le Plaisir. Струйные Мозги. Проявлять под кайфом. Спасибо! JetGehizn. Entwicklung mit Vergn ü gen.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.