In some cases its usage can obscure the real underlying weakness or otherwise hide chaining and composite relationships.
Some people use "input validation" as a general term that covers many different neutralization techniques for ensuring that input is appropriate, such as filtering, canonicalization, and escaping.
If for whatever reason the method has a very strict contract, then yes, it is up to you to check before calling. Therefore, Delete Person does not appear to fulfill its contract well.
This is an especially important concept when you create a public method, because you are basically advertising that some method performs some operation. Sometimes, it deletes a person, and sometimes it throws a Null Reference Exception, or a Database Not Connected Exception, or sometimes it does nothing (such as if the person is already deleted).
I am not interested just in null conditions, but in validation of any input variables (negative value to by the method.
For example, in web applications, many programmers believe that cookies and hidden form fields can not be modified from a web browser (CWE-472), although they can be altered using a proxy or a custom program.This allows you to dynamically load new rules at run time.This is useful when you have custom rules that aren’t suitable for being bundled with ESLint.Now, I have read here in some answers and also in Pragmatic Programmer book, that the validation of input parameter is responsibility of caller.So it means, that I should validate the input parameters before calling of the function. And that raises one question: doesn't it create a duplication of checking condition everywhere the function is called?