Sure but that is a design choice. Either way, a decision has to be made as to whether an object is valid. The only difference is whether caller or callee makes that determination. Sometimes it makes sense for the caller to do it (eg if a function is called many times and supplied with the same object) and sometimes for the callee to do it.