

- each module is a well defined system that can be used to with other applications
- each module has a single specific purpose
- modules can be separately compiled and stored in a library
- modules can use other modules
- modules should be easier to use than to build
- modules are simpler from outside than inside
Code is easier to read - Working on modular programming makes code easier to read because functions perform different tasks as compared to monolithic codes.
Code is easier to test - In software, some functions perform fewer tasks and also functions that perform numerous tasks. If the software is easily split using modules, it becomes easier to test.
Reusability - There are times where a piece of code is implemented everywhere in our program. Instead of copying and pasting it, again and again, modularity gives us the advantage of reusability so that we can pull our code from anywhere using interfaces or libraries. The concept of reusability also reduces the size of our program.
Faster fixes - Suppose there is an error in the payment options in any application, and the bug needs to be removed. Modularity can be a great help because we know that there will be a separate function that will contain the code of payments, and only that function will only be rectified. Thus using modules to find and fixing bugs becomes much more smooth and maintainable.
Easy collaboration - Different developers work on a single piece of code in the team. There are chances of conflicts when there's a git merge. This conflict can be reduced if the code is split between more functions, files, repos, etc. We can also provide ownership to specific code modules, where a team member can break them down into smaller tasks.
- There is a need for extra time and budget for a product in modular programming
- It is a challenging task to combine all the modules
- Careful documentation is required so that other program modules are not affected
- Some modules may partly repeat the task performed by other modules. Hence, Modular programs need more memory space and extra time for execution
- It reduces the program's efficiency because testing and debugging are time-consuming, where each function contains a thousand lines of code
- Decoupling means that one module cannot depend on another module directly
- Coupling is the act of joining two things together (modules)
- Cohesion refers to the degree to which the elements inside a module belong together
