Руководство по написанию гибкого программного обеспечения?

StackOverflow https://stackoverflow.com/questions/2714355

  •  01-10-2019
  •  | 
  •  

Вопрос

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

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

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

Решение

  1. Определите структуру проекта, прежде чем начать кодирование. Описать свои основные цели и подумайте, как вы можете достичь этого.

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

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

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

  5. Если да -> файлы CPP

  6. Наслаждаться.

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

Другие советы

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top