Reusability: This is a very good tool. It is faster and more simple. However, to create automation can be difficult and advanced, but very useful if beneficial. This also means that you are creating many copies, and framework in multiple places to access risking the possibility to slow down. These reasons make programmers consider it is not worth the effort.
Security in terms of hiding code: Data hiding is a method used in object-oriented programming to hide information within computer code. Objects within a code are not privy to information considered hidden. It presents several advantages for programmers, because objects are unable to connect to irrelevant data and hackers are less likely to be able to access this hidden data. On the other hand; If an object does access hidden data, it will return an error. This can lead to possible destructive results if exposed to the user. Improper use of this data will prove detrimental.
Passing of data versus data encapsulation: Encapsulation is more secure but limited to users. Passing data is much faster. How object-oriented methods are similar to procedural modules. Procedure modules maintenance is time consuming due to the difficulty. OOP allow you to create classes that modeled from real world objects.
Code reuse: In more than one program, a Programmer could reuse the wrong code, bugs could get replicated; this reused code could create more maintenance than needed. On the positive side this is not just limited to code; this also include reuse of pattern, framework, module, template and code. This creates high optimization when working on projects or single applications.