Цитата |
---|
БМВ написал: Главное, что при переносе одной функции, не надо ползать. по модулю или модулям, и копировать процедуры дочерние. |
Проблема надуманная, но решаемая.
Цитата |
---|
БМВ написал: 20-30 строк это перебор (хотя все знают, что мой лимит 10 |
Число строк -
индусский неподходящий ориентир. Мне нравится термин "нулевая сложность".
Есть артефакт:
Код |
---|
CreateObject("VBScript.RegExp").Execute |
у него нулевая сложность - нечего убрать.
А чтобы он сработал нужен примерно такой декоратор:
Скрытый текст |
---|
Код |
---|
Function RegExp_Get( _
ByVal str As String, _
Pattern As String, _
Optional Globa1 As Boolean = True, _
Optional IgnoreCase As Boolean = True, _
Optional Multiline As Boolean = True) _
As Object
' и опыт, сын ошибок
' str = Replace(str, Chr(10), " ")
'Ищем все совпадения по регулярному выражению
Static RegEx As Object
If RegEx Is Nothing Then _
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
'Нужны все совпадения или только первое?
.Global = Globa1
'Регистр неважен?
.IgnoreCase = IgnoreCase
'Игнорировать переносы строк?
.Multiline = Multiline
'Регулярка
.Pattern = Pattern
Set RegExp_Get = .Execute(str)
End With
End Function |
|
И у него нулевая сложность (надеюсь) - он
чуть направляет .Execute в нужную сторону.
А чтобы RegExp_Get не имел возможности ошибиться, предлагаю отдельный декоратор:
Скрытый текст |
---|
Код |
---|
Function RegExp_Test( _
ByVal sText As String, _
sPattern As String, _
Optional bGlobal As Boolean = True, _
Optional bCaseIgnore As Boolean = True, _
Optional bMultiline As Boolean = True) _
As Boolean
sText = Replace(sText, Chr(10), " ")
Static RegEx As Object
If RegEx Is Nothing Then _
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
.Pattern = sPattern
.Global = bGlobal
.IgnoreCase = bCaseIgnore
.Multiline = bMultiline
If .Test(sText) Then
RegExp_Test = True
End If
End With
End Function |
|
И у него нулевая сложность - не смотря на количество строк, он запускает нужный минимум и возвращает минимум. Надеюсь, тоже нечего отнять(отсечь) в коде?
А те, кто не сталкивался со сложностью сложных проектов, предложат коды двух артефактов соединить в одну процедуру. Они ещё не насытились проблемами преждевременной оптимизации.