Names shouldnt give away implementation. ex
public interface Modem { boolean dial(String phoneNumber); ...
What if the modem isnt over a phone line (like hard wired, usb, coaxial, etc.)? Having `dial` and `phoneNumber` exposes the implementation. It should instead be
public interface Modem { boolean connect(String connectionLocator); ...