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);
...