To reference another contract, the ABI is easily included like this. What information needs to be there? The function name, I guess, what about accessability such as public/private/internal/external/pure/view, or if it returns a type and what it returns? Asking for what is needed, not so much what looks good or makes it more human readable.
contract A { function foo() public returns (uint) {} }
contract B {
A a = A();