The 50% heuristic comes from a story I read once about a company claiming they were able to build a ~200 kloc app in a dynamic-typed language.<p>The secret was their ~200 kloc unit test suite. :)<p>It has nothing to do with argument types per se, just that one <i>must</i> have very high coverage in order to be able to be reasonably sure that their app won&#x27;t crash after minor code changes.<p>In my current project we can get away with having integration tests cover a lot of ground and only unit test what makes sense thanks to static typing. High coverage is good to have, but should be balanced with test development and maintenance effort.