Roy Tang

Programmer, engineer, scientist, critic, gamer, dreamer, and kid-at-heart.

Blog Notes Photos Links Archives About

Type Interfaces Matter

… especially for strongly-typed languages.

In one of the bigger Java projects that I took over, I was often annoyed to find some devs had written method signatures like

public void doTheThing(HashMap<K, V> params)

Which is silly – not because of the naming, that’s obviously not a real-world function name. The silly part is requiring a particular implementation (HashMap) instead of the generic interface (Map). It unnecessarily restricts your API and makes it less flexible. Unless your function specifically cares about the hashing part, there’s no reason the parameter isn’t a Map instead

Since most Java libraries will perform proper encapsulation and give you a generic Map type, it adds some mismatch when you have to plug one of those types into your function; one would need to instantiate a new HashMap and copy the contents of the generic Map into it so that your function accepts it

Use the generic interface as much as possible! Use the specific implementation type only when instantiating!

Posted by under post at #Software Development
Also on: tumblr twitter / 0 / 164 words

See Also