Как разработать приложение модульным способом?

Python не вынуждает Вас при использовании "сам". Можно дать его безотносительно имени, которое Вы хотите. Просто необходимо помнить, что первым аргументом в заголовке определения метода является ссылка на объект.

23
задан mac 8 December 2009 в 09:17
поделиться

5 ответов

Старайтесь, чтобы вещи оставались слабосвязанными, и обильно используйте интерфейсы, чтобы помочь.

Я бы начал разработку с разделения проблем . Основными архитектурными уровнями являются:

  • Проблемный домен (он же Engine, Back-end): классы домена, которые выполняют всю фактическую работу, обладают знаниями предметной области, реализующими поведение предметной области.
  • Постоянство: управление хранением для классов предметной области, базы данных / слой файловой системы
  • Пользовательский интерфейс: графический интерфейс, который взаимодействует с классами домена
  • Системные интерфейсы: общение с другими системами, например. сети, веб-службы

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

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

Я также хотел бы повторить то, что сказал MicSim относительно тщательного проектирования интерфейса плагина и написания нескольких различных плагинов для упражняйтесь в этом. Это единственный способ прояснить вопросы взаимодействия приложения и плагинов.

о чем свидетельствует регулярная поломка плагина при обновлении системы.

Я также повторил бы то, что сказал MicSim, относительно тщательного проектирования интерфейса плагина и написания нескольких различных плагинов для его реализации. Это единственный способ прояснить вопросы взаимодействия приложения и плагинов.

о чем свидетельствует регулярная поломка плагина при обновлении системы.

Я также повторил бы то, что сказал MicSim, относительно тщательного проектирования интерфейса плагина и написания нескольких различных плагинов для его реализации. Это единственный способ прояснить вопросы взаимодействия приложения и плагинов.

12
ответ дан 29 November 2019 в 02:51
поделиться

Что ж, вероятно, первое, с чего нужно начать, - это сесть и выяснить, что плагину может понадобиться для выполнения его цели.

Вы хотели бы рассмотреть два основных аспекта в ваш дизайн.

  • Как ваша структура будет передавать запросы / получать ответы от плагина?
  • Какие вспомогательные классы или модули можно было бы предоставить?

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

  • Что вы хотите написать самостоятельно и что вы счастливы просто выбрать из существующей библиотеки?

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

2
ответ дан 29 November 2019 в 02:51
поделиться

Поскольку вы будете предоставлять некоторые базовые функции с помощью своего приложения, убедитесь, что вы сами кодируете часть, которая должна быть расширена / заменена, как плагин. Тогда вы лучше всего почувствуете, как должен выглядеть ваш API.

И чтобы доказать, что API хорош, вы должны написать второй и третий плагин, потому что тогда вы обнаружите, что сделали много предположений, когда написание первого. Обычно все немного проясняется после выполнения этого 2-го и 3-го шагов.

Теперь вам следует написать еще один плагин, потому что последние написанные вами плагины похожи на первый по типу, входным данным и представлению (возможно, еще один погодный веб-сервис) . Выберите что-то совершенно другое, с совершенно другими данными, и вы увидите, что ваш API все еще слишком адаптирован. (В противном случае вы хорошо поработали!)

8
ответ дан 29 November 2019 в 02:51
поделиться

Изучите шаблон "слушатель-подписчик". Рано или поздно ваше приложение станет достаточно сложным, и вам придется реализовывать обратные вызовы. Когда вы достигнете этого предела, используйте listener-subscriber (есть реализация в wxPython).

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

1
ответ дан 29 November 2019 в 02:51
поделиться
  • тщательно разрабатывайте api для своего приложения ( Как разработать хороший API и Почему это важно )
  • сделать все, что можно использовать независимо в модуле, затем сгруппировать и построить большие части из простых частей (KISS)
  • не повторяться (DRY)
  • написать / часто публиковать краткую документацию для себя и других (мантра открытого исходного кода) ...
1
ответ дан 29 November 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: