Delphi 유닛에는 다른 언어들이 자꾸 새로 만들어 내는 구분이 이미 있습니다. implementation 위에 선언한 것은 이 유닛을 쓰는 다른 유닛에서 보입니다. 그 아래는 유닛만의 것이어서, 거기에만 있는 타입이나 루틴은 바깥에서 이름조차 부를 수 없습니다.
사람들이 과소평가하는 부분은 uses 절의 위치입니다. interface 쪽 uses 절에 적은 유닛은 공개 선언이 기댈 수 있는 대상이 되고, 그래서 그 유닛의 interface가 바뀌면 필요 이상으로 멀리까지 영향이 갑니다. 루틴 본문에서만 필요하다면 implementation 쪽 uses 절에 적으십시오. 컴파일러도 나름의 방식으로 같은 이야기를 합니다. 유닛끼리 서로 의존하는 것은 허용되지만, interface 쪽 uses 절로만 이어진 순환은 허용되지 않습니다.
오래된 데스크톱 프로젝트를 열면 저는 interface 부분과 그 uses 목록부터 읽습니다. 짧은 interface 부분과 짧은 uses 목록은 Pascal이 제공하는 것 가운데 공개 모듈 표면에 제일 가까운 것이고, 그렇게 유지하는 데는 비용이 들지 않습니다.
