Where do you check if an object that you are passing to a method is null or not?
Should an object need to be tested before calling a method? or within the method tha
You can design a method to work with valid objects only.
That means you are expect to receive valid objects ( not null in your case ).
That means you don't know how to react and what to do with invalid objects:
So if your method don't know exactly how to handle invalid object and the method won't follow additional logic in the invalid case you should put
Debug.Assert( Person );
at the PrintAge begin and this will force you to make checks upper by call stack.
The lower function in hierarchy is the less checks it should do. The following is disadvantages of doing checks in the functions that do the work.