Где Бизнес-правила в MVC

Оказывается, Outlook VBA был подходом для этой задачи.

Вчера я наконец нашел отличный ответ:

https://www.datanumen.com/blogs/batch-find-replace-specific-words-outlook-folder-names/ [114 ]

Мне пришлось немного изменить код, заменив:

Set objFolders = Outlook.Application.Session.Folders("Personal").Folders

Таким образом, он ищет / изменяет только подпапки в папке, которую я выбрал в настоящее время:

[111 ]

Вот (почти) готовый код:

Public strFind, strReplace As String

Sub FindReplaceWordsinFolderNames()

    Dim objFolders As Outlook.Folders
    Dim objFolder As Outlook.Folder

    Set objFolders = Application.ActiveExplorer.CurrentFolder.Folders

    'You need to input the specific words for find and replace
    strFind = InputBox("Enter the specific words you want to change.")
    strReplace = InputBox("Enter the specific words you want to change to. (Case Sensitive)")

    For Each objFolder In objFolders
        Call ProcessFolders(objFolder)
    Next

    MsgBox "Complete!", vbExclamation, "Rename Folders"

End Sub

Private Sub ProcessFolders(ByVal objCurrentFolder As Outlook.Folder)
    Dim objSubfolder As Outlook.Folder

    On Error Resume Next
    If InStr(LCase(objCurrentFolder.Name), LCase(strFind)) > 0 Then
       'Find and replace the specific words
       objCurrentFolder.Name = Replace(LCase(objCurrentFolder.Name), LCase(strFind), strReplace)
    End If

    'Process all folders recursively
    If objCurrentFolder.Folders.Count > 0 Then
       For Each objSubfolder In objCurrentFolder.Folders
           Call ProcessFolders(objSubfolder)
       Next
    End If
End Sub

У него нет проверки ошибок, поэтому, если я нажму кнопку «Отмена» в поле ввода или оставлю пустым и нажму «ОК», макрос будет действовать как "" - это strFind, поэтому он превращает все имена папок в строчные, lol.

Я думаю, что добавление этого сразу после того, как 2 поля ввода решат это, но я проверю это завтра:

    If strFind = "" Or strReplace = "" Then
        Exit Sub
    End If

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

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

25
задан Gustavo Carreno 17 October 2008 в 13:32
поделиться

7 ответов

Сначала я бы сказал, что они принадлежат модели. Статья MVC в Википедии , похоже, согласна: «В MVC модель представляет информацию (данные) приложения и бизнес-правила, используемые для манипулирования данными». В конце концов, под «бизнес-правилами» мы подразумеваем функциональные алгоритмы и логику, которые кодируют область, с которой связано ваше приложение, а не логику, связанную с вводом / выводом. Эта основная бизнес-логика не изменяется или не должна изменяться в зависимости от того, что отображается для пользователя (который является доменом представления) или от ввода пользователя (который в основном принимается контроллером).

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

18
ответ дан 28 November 2019 в 18:01
поделиться

Причина Вы никогда не видите, что MVC обращается к "Бизнес-правилам", состоит в том, что MVC в общем и целом является шаблоном представления. Это фокусируется о том, как структурировать Ваше приложение. Модель, например, может считаться моделью представления. Модель Вашего приложения, которое тогда представляет представление.

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

39
ответ дан 28 November 2019 в 18:01
поделиться

Бизнес-правила всегда живут в модели. Модель является битом, что Вы могли resuse с совершенно другим UI. Представление очевидно абсолютно зависит от выбора UI, и контроллер должен взять данные из модели и сказать представлению представлять его.

бизнес-логика Помещения в представление плоха, потому что это связывает структуру с представлением.

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

12
ответ дан 28 November 2019 в 18:01
поделиться

Кавычка из Википедии Статья :

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

5
ответ дан 28 November 2019 в 18:01
поделиться

Есть ли какая-либо причина, почему Вы наклоняетесь, смешивают MVC и Ntier? Наше приложение делает просто это. Наши контроллеры используются для подтверждения правильности данных и решают, какой Бизнес-Слой звонит для создания.

OurApp. Сеть - Asp.net Проект
MVC OurApp. Бизнес - Бизнес-Библиотека Слоя
OurApp. DataAccess - Библиотека Слоя Данных
OurApp. Объекты - В основном все 'модели', совместно использованные всеми слоями

4
ответ дан 28 November 2019 в 18:01
поделиться

Вы, ребята, не правы, бизнес-правила живут в контроллере, а не в модели ...

-6
ответ дан 28 November 2019 в 18:01
поделиться

Бизнес-правила должны быть в модели, а НЕ в контроллере. Контроллер и представление являются частью уровня представления.

Модель представляет сущности и функциональные возможности домена.

Контроллер является просто менеджером для ввода пользовательских данных и запросов, выполнения действий в / над моделью и отображения, к представлениям на уровне представления. Контроллер - это не просто посредник, контроллер представления ИЛИ может воздействовать на модель.

2
ответ дан 28 November 2019 в 18:01
поделиться
Другие вопросы по тегам:

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