Как стать автором
Обновить

IDE своими руками: проектирование

Время на прочтение2 мин
Количество просмотров9.9K
Давно хотелось рассказать о том как делать сложные проекты с проектирования до выпуска. Считается, что IDE — это довольно сложные системы. Это очень хорошо. Есть простор для проектирования, применения паттернов, построения иерархии классов.

Примеры успешных IDE:
  • Visual Studio
  • Eclipse
  • IDEA
Мне уже не терпится начать…

Проектирование


Если мы хотим довести проект до конца — его необходимо спроектировать. Зачем?
  1. Чтобы заранее продумать проект, его структуру и не допустить критических ошибок еще на ранних стадиях.
  2. Чтобы видеть весь объем работы и не делать в будущем больше чем задумано (так умирают интересные проекты).
  3. Чтобы проект был согласованным.
Проектирование не обязательно имеет письменную форму. Все программисты проектируют код в мыслях по мере его написания. Таким образом, они проектируют на низком уровне. Чтобы упростить и улучшить низкоуровневое проектирование надо подготовить почву — высокоуровневую часть.

Этапы проектирования:
  1. Определение цели
  2. Выработка требований
  3. Определение архитектуры
  4. Написание высокоуровневого проекта
Каждый следующий этап опирается на результаты предыдущего и уточняет их.

Проектируем IDE


Цель


Научиться проектировать и разрабатывать сложные проекты.
Спроектировать и разработать IDE для вэб-разработки.

Требования


Общие
  Кроссплатформенность (+ использование нативного интерфейса в каждой из выбранных операционных систем)
  Мультиязычность
  Расширяемость

Редактор
  Подсветка синтаксиса (+ указание ошибок синтаксиса)
  Всплывающие подсказки при наведении на сущности в коде
  Автоматическое дополнение кода (Code Completion)
  Сниппеты
  Работа с несколькими документами одновременно

Поддерживаемые языки программирования/разметки
  HTML
    Выбор стандарта для подсказок
  CSS
    Использование стандартов CSS2, CSS3 (на выбор) для подсказок
  JavaScript
    Использование JsDoc для подсказок

Архитектура


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

Язык программирования: C# (соответствует требованиям и я его знаю достаточно хорошо)
Среда исполнения: .net (Windows), mono (Mac OS X, *nix)

Целевые платформы:
  • Mac OS X (начиная с версии 10.5.0)
  • *nix (следует уточнить список дистрибьютивов в будущем)
  • Windows (начиная с версии 2000)
Распространение:
  • Mac OS X — dmg
  • *nix — в пакетах, специфичных для каждого дистрибьютива
  • Windows — в виде инсталлятора
Структура проекта:
  • Редактор
    • Подсветчик синтаксиса (с легко расширяемым списком языков)
    • Анализаторы структуры документа: HTML, CSS, JavaScript
    • Менеджер сниппетов
  • Среда
    • Менеджер настроек
    • Менеджер горячих клавиш
    • Менеджер интерфейса
      • Панели инструментов
      • Области данных (файловая структура, объектная модель документа, ...)
  • Расширяемость
    • Расширения в виде полноценных библиотек
    • Расширения в виде скриптов на JavaScript
  • Интерфейс
    • Реализации
      • WinForms (Windows)
      • Gtk# (*nix)
      • Cocoa# (Mac OS X)

Вот такой вот получился первый шаг в проектировании. Дальше будет намного более сложный этап — составление высокоуровневого проекта. В скором времени я постараюсь написать статью и по этой теме. Спасибо за внимание.
Теги:
Хабы:
+38
Комментарии150

Публикации