Руководство по написанию гибкого программного обеспечения? - PullRequest
2 голосов
/ 26 апреля 2010

Я разрабатывал интерпретатор в C ++ для моего (эзотерического, если хотите) языка программирования некоторое время назад. Одна из главных вещей, которые я заметил: я начинаю с гибкой концепции, и чем дальше я кодирую (Tokenizer-> Parser-> Interpreter), тем менее гибкой становится вся система.

Например: сначала я не реализовал функцию include, но интерпретатор уже был запущен и работал - у меня были чрезвычайные трудности с его реализацией, и это было все равно, что "исправить что-то" позже. Моя система очень быстро потеряла гибкость.

  • Как мне научиться сохранять относительно небольшие проекты C ++ максимально гибкими и расширяемыми во время разработки?

Ответы [ 3 ]

1 голос
/ 26 апреля 2010

Если вам нужно сохранить

Проекты C ++ максимально гибкие и расширяемые в процессе разработки

тогда у вас нет спецификации продукта, у вас нет реальной цели и способа определить конечный продукт.

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

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

0 голосов
/ 26 апреля 2010

Не бойся Эволюции (Рефакторинг).

Если существует множество классов, которые соответствуют теме, создайте общий базовый класс.

Вместо жесткого кодирования элементов данных используйте указатели на абстрактный базовый класс.
Например, вместо использования std::ifstream используйте std::istream.

В моем проекте у меня есть абстрактные классы для чтения и письма. Классы, которые поддерживают чтение и запись, используют эти интерфейсы. Я могу передать специализированных читателей в эти классы без изменения какого-либо кода. Считыватель базы данных наследуется от базового класса Reader и, следовательно, может использоваться везде, где используется считыватель.

0 голосов
/ 26 апреля 2010
  1. Определите структуру проекта перед началом кодирования. Обозначьте свои основные цели и подумайте, как этого достичь.

  2. Код заголовков.

  3. Посмотрите, возможно ли реализовать каждую функцию с использованием этого набора интерфейсов

  4. Если нет -> вернуться к (2)

  5. Если да -> код .cpp файлы

  6. Наслаждайтесь.

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

...