Найти тему

Превращение императивного кода декораторами в декларативный

Начал кодить функцию

Function CompStepXO9(cell As Range) As Range
' ход компьютера,
' принимает ячейку хода врага, и
' возвращает ячейку хода своего

' Если таблица куда послали занята,
' ищу свободную таблицу,
' играю в простые крестики нолики

:-( Понял, что погряз в спагетти:

Dim number As Long
number = TableNextNumber(CellStepLast)

If number < 1 Then MsgBox4Debug "Ошибка"

If TablesXO9States(number) <> "open" Then

number = OpenFind(TablesXO9States)

If number < 1 Then MsgBox4Debug "Ошибка"

End If

Dim tableNext As Range
Set tableNext = TablesXO9Ranges(number)

If tableNext Is Nothing Then
MsgBox4Debug "Ошибка"
End If
' и тому подобное ...

Сбросил чары, заменил на:

Set CompStepXO9 = _
PlayXO( _
TableFree( _
TableDest( _
TableNumberCheck( _
TableNextNumber(cell)))))