Arhn - архитектура программирования

Каким стандартам следует следовать при организации решения?

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

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

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

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

У меня недостаточно высокая репутация для публикации изображений, но текущая организация имеет все формы на корневом уровне решения и представляет собой просто их список в алфавитном порядке (как и следовало ожидать), например: frmAddEquipment, frmAssignSoftware, frmBackupReports, frmContacts и т.д. и т.п.

21.05.2019

Ответы:


1

Даже в настольном приложении у вас должны быть слои. Разделение вашего приложения на уровни доступа к данным, бизнес-логики и уровня представления наложит на ваше приложение структурные и архитектурные ограничения, которые повысят возможность повторного использования, поддержку и тестируемость.

Это, конечно, предполагает, что вы использовали архитектурный шаблон на основе слоев. Если нет, и все ваши данные и бизнес-логика собраны в ваших формах и реплицированы в различных формах, то, скорее всего, у вас есть то, что мы называем "комок грязи" и должны принимать серьезные решения. Вы также можете

  1. рефакторинг вашего приложения до целевой архитектуры или
  2. признайте, что вы создали одноразовое приложение, и продолжайте свой текущий путь.

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

21.05.2019
  • Да, я волновался, что это может быть так, я унаследовал этот проект от предыдущего разработчика, и, насколько я понимаю, он превратился из единой формы в то, чем он является в настоящее время, в течение нескольких лет... Итак, лучший подход к созданию этого беспорядок во что-то устойчивое, заключался бы в том, чтобы войти в каждую форму и попытаться разбить как можно больше кода на повторно используемые классы и интерфейсы, которые я затем поместил бы в уровни доступа к данным и бизнес-логики, сохраняя при этом фактическую конструкцию формы в коде каждой формы и перемещение их на «уровень представления»? 21.05.2019
  • У тебя вышло. Медленная, утомительная работа с небольшой отдачей до тех пор, пока значительная часть системы не будет преобразована в целевую архитектуру. 21.05.2019
  • Большое спасибо за обратную связь, это должно быть хорошим упражнением в дизайне, даже если это займет некоторое время! 21.05.2019
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..