Использование частных методов для организации бизнес-логики
По мере усложнения кода метода может оказаться полезным разделить часть бизнес-логики на частные вспомогательные методы. Хорошими кандидатами на роль вспомогательных методов являются утилиты, которые можно использовать в нескольких местах вашего класса. Разбивка кода на несколько методов упрощает его понимание и поддержку.
Рассмотрим пример частного вспомогательного метода с именем ParseFilter (), который анализирует строку фильтра и извлекает значения, которые будут использоваться для фильтрации данных в наборе данных. В этом примере метод ParseFilter () вызывается методом GetData (), где он передаёт в ParseFilter () строку фильтра. Метод ParseFilter () возвращает два числа, представляющие диапазоны значений для фильтрации.
Пример реализации частного метода ParseFilter()
method private void ParseFilter (input pFilter as character, output pFirstNum as integer, output pSecondNum as integer): define variable idx as integer no-undo. /* pFilter содержит: "CustNum >= 1 AND CustNum <= 100" */ assign idx = index(pFilter,">= ") pFilter = substring(pFilter,idx + 3) idx = index(pFilter, "AND") - 1 pFirstNum = integer(substring(pFilter,1,idx)) idx = index(pFilter,"<= ") pSecondNum = integer(substring(pFilter,idx + 3)). return. end method.
Пример использования метода ParseFilter() методом GetData()
method public void GetData( input pFilter as character, output phds as handle ): define variable Num1 as integer no-undo. define variable Num2 as integer no-undo. phds = dataset dsCustomerBE:handle. phds:read-json( "file", "C:\OpenEdge\WRK\myExample.json", "empty"). if pFilter <> "" then do: /* pFilter содержит : "CustNum >= Num1 AND CustNum <= Num2" Необходима фильтрация данных из набора данных, содержащих данные клиентов из указанного диапазона. */ ParseFilter(input pFilter, output Num1, output Num2). end. return. end method.