If you have codes stored in your OBD2 computer, and you disconnect the battery, you lose all your freeze frame data and all monitors go back to "not run". This creates the problem of not knowing the specific engine conditions that set the code in the first place. Unless there is a misfire or cat damaging event, most codes are 2 or 3 trip codes. But the codes will not set again until the monitors are run. I don't know your driving habits, but it took 2 years to completely run all monitors on my wifes Lexus (cuz the car rarely saw the freeway) and we could not hit the parameters to run the EVAP monitor. If you don't do you own diagnosis and you take your car to a shop, the technician will never know the conditions that set the code and thus will not be able to duplicate the conditions.