В модуле Delphi уже есть разделение, которое другие языки всё изобретают заново. Всё, что объявлено выше implementation, видно модулям, которые подключают этот. Всё, что ниже, принадлежит только самому модулю, и тип или процедуру, объявленные лишь там, снаружи даже назвать нельзя.
Недооценивают обычно другое, а именно где стоит uses. Модуль из uses в разделе interface становится тем, на что могут опираться ваши публичные объявления, поэтому изменение его интерфейса расходится дальше, чем нужно. Если он нужен только телам процедур, перечислите его в uses раздела implementation. Компилятор говорит то же самое по-своему. Модули могут зависеть друг от друга взаимно, но не через цикл, составленный только из uses в разделах interface.
Открывая старый настольный проект, я первым делом читаю разделы interface и их списки uses. Короткий раздел interface с коротким списком uses ближе всего к опубликованной поверхности модуля из того, что даёт Pascal, и поддерживать это ничего не стоит.
