Using general sub procedures and functions can help divide complex applications into more manageable units of code. This improves readability and reusability. Sub procedures execute code within their block but do not return a value, while functions return a value. Arguments can be passed to sub procedures and functions to increase reusability. Defining procedures with meaningful names and scopes, and calling them consistently, helps structure applications effectively.