Способ мышления-Форт

         

Глава 6. Фрагментация - часть 13


Или, предположим, Вы желаете отформатировать печать игральных карт в виде 10Ч (для "десятки червей"). Нельзя использовать точку для печати 10, поскольку она выводит заключительный пробел.

Вот более удачное разбиение, встречающееся в некоторых Форт-системах:

: (.) ( n -- a #) DUP ABS 0 ; : . ( n) (.) TYPE SPACE ;

Другой пример неотделения выходной функции от вычислений можно найти в нашей собственной работе по вычислению римских чисел из главы 4. При примененном нами решении мы не можем записать полученную римскую цифру в буфер или даже выровнять ее по центру поля. (Лучше было бы использовать слово HOLD вместо EMIT.)

Упрятывание информации может также служить причиной и для `не` разбиения. К примеру, если Вы выделяете фразу

SCR @ BLOCK

в определение

: ЭКРАН SCR @ BLOCK ;

то помните, что Вы это делаете только потому, что Вам может захотеться изменить положение экрана при редактировании. Не заменяйте вслепую все появления фразы на новое слово ЭКРАН, поскольку это определение может быть изменено, а ведь обязательно встретятся несколько мест, где Вам действительно нужно лишь SCR @ BLOCK.

------------------------------------------------------------ СОВЕТ Если повторяющийся фрагмент кода для некоторых случаев может измениться, а для других - нет, факторизуйте только те случаи, которые подвержены изменениям. Если фрагмент меняется более, чем одним образом, факторизуйте его в более, чем одно определение. ------------------------------------------------------------

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

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

------------------------------------------------------------ СОВЕТ Упрощайте командный интерфейс, уменьшая количество команд. ------------------------------------------------------------




Содержание  Назад  Вперед