Which of the following is true with regard to defensive programming? Preconditions should never be visible to callers. Program code frequently assumes that input will be valid and that algorithms will behave as expected. You should never guard assumptions. Information hiding dictates that we never document assumptions.