Как структурировать код по стратифицированному дизайну (по уровням абстракции)

Я разбираюсь в стратифицированном дизайне (т. Е. Структурировании кода таким образом, что каждая функция вызывает функции только на один уровень абстракции ниже). Однако мне сложно реализовать это в своем коде. Я написал следующий фрагмент кода:

      function is_alpha(i)
  'a' ≤ input[i] ≤ 'z' || 'A' ≤ input[i] ≤ 'Z'
end

function is_number(i)
  '0' ≤ input[i] ≤ '9'
end

function is_alphanumeric(i)
  is_alpha(i) || is_number(i)
end

function is_valid_rest_identifier_char(i)
  is_alphanumeric(i) || input[i] == '_'
end

function is_valid_first_identifier_char(i)
  is_alpha(i) || input[i] == '_'
end

Здесь использование языковой функции оператора «меньше или равно» можно рассматривать как нижний уровень (уровень 0). Как таковой и находятся на этом слое. Один слой выше.

Но как насчет двух нижних функций сейчас? Они должны быть на одном уровне, но один из них зовет из уровня 1 и другие вызовы из уровня 0. Оба они будут вызываться из одной и той же функции, поэтому кажется невозможным удовлетворить все ограничения.

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

Как лучше всего структурировать этот довольно тривиальный фрагмент кода?

0 ответов

Другие вопросы по тегам