It's not too often that we have the opportunity to unveil the next paradigm in software development: Vector Oriented Programming (or, VOP). In addition to sounding cooler than OOP, VOP offers all the benefits of OOP and a healthy heap of flexibility. Take, for example, this method uncovered in an order entry system used within a mid-western shipping company ...

/**
 * Returns an Order vector or a vector of Order vectors, based on one 
 * or more parameter values. If there was an error retreiving the
 * Order, then a standard Error vector is returned. (see docs)
 *
 * @param  getOrSet        indicates what action to take. can be:
 *                         "get", "set", "close", "find"
 * @param  orderNumber     number of the order
 * @param  orderId         id of the order
 * @param  customerNumber  number of the customer
 * @return                 vector of 18 elements or a vector of vectors
 *                         or an error vector
 */
  public Vector getSetOrder(String getOrSet, String orderNumber, 
                            String orderId, String customerNumber)
  {
    ...
  }

All it takes is a quick trip to the documentation to see what the vectors will contain ...

Order Vector
  • Order_Number
  • Order_Id
  • Customer_Number
  • Order_Date
  • Order_Status
  • [Ship_Date] (exists only if Status is "shipped")
  • PO_Number
  • [Shipping_Code] (exists only if Status is "shipped")
  • ...
  • LastSaved_Username --or-- LastSaved_Date (past 11/12/02, it is Date)
  • [LastSaved_Username] (exists only past 11/12/02)
  • ...

And sure, you may need to constantly pepper your code with things like, "poNumber = ((orderVector[4]=="shipped")?orderVector[6 ]:orderVector[5 ])", but you see, that's the beauty of it. Pepper makes everything taste better.