Use The Static Typing

The system of static typing is your friend. Yes, I know arguments for dynamic typing, but that's a different issue. The point I'm making is that, if you're using a statically typed language, e.g. Java, use the type system to your benefit. Don't pass around generic objects; create a specific type, instead. This type can be implemented with the FlyweightPattern, but it has a distinct type.

Contrast this signature

  void assignCustomerToSalesman(Long customerId, Long salesmanId);

versus

  void assignCustomerToSalesman(CustomerId customerId, SalesmanId salesmanId);

or even:

  void assignCustomerToSalesman(Customer customer, Salesman salesman);

or even:

 class Salesman { ...
  void assignCustomer(CustomerId customerId);

The latter three have no possibility of getting the arguments in the wrong order.


I've been looking for a name for this, and haven't found one. I'm proposing SpecificTypingPattern. --GeorgeDinwiddie


This SoftwareDevelopmentGuideline is related to the NullObject pattern.

See also: CompilerErrorsAreYourFriends, WholeValuePattern, StronglyTypedCollection, StaticTypeSafety


EditText of this page (last edited January 16, 2004) or FindPage with title or text search