

We examine two use cases to understand the trade-offs between dependency management and change control. When we use a shared library, we need to consider dependency management and change control.
#ICONJAR SHARED LIBRARIES CODE#
Shared Libraryĭespite the shared library helping us to manage code reuse, it contains trade-offs.

#ICONJAR SHARED LIBRARIES SOFTWARE#
Today, I will talk about one of these techniques, the shared library, based on Software Architecture's The Hard Parts Modern Trade-Off Analysis for Distributed Architecture book. Therefore, some techniques are used to manage code reuse within distributed systems. However, it is not possible to completely prevent code reuse. The critical point of WET is reducing the amount of shared code. īecause of coupling and dependency issues, in distributed architectures, the famous principle is WET (Write every time or Write everything twice). Loose coupling refers to a situation where different components know as little as necessary about each other, whereas no coupling between components that they are completely unaware of each other’s existence. The higher the coupling, the stronger the dependency. IconJar uses the following third party open-source projects/code: IJSVG by Curtis Hard IJSVG is an open-source SVG rendering and exporting framework written in Object-C/C. Bravo! You decreased the code lines but increased the coupling and maintenance costs.Ĭoupling is a measure of how much two components know about and depend on one another. Plus, weve included an entire IconJar library with super. This is because they have different business logic, and they can evolve independently based on the needs of the business environment. Untitled UI Icons come neatly organized alphabetically into 19 intuitive categories and 4 styles. Using the same library in these two parts increases the dependency and coupling.

In that manner, should we use the shared library in these different parts to prevent code duplication? If your answer is "YES," you need to think about your answer again while reading this article. They have disparate business logic but use the same function to solve various problems in different contexts. However, is this idea always valid in every situation?įor example, think about two different parts of your system. This is because we're using functions, abstractions, etc., not to repeat ourselves in our projects. When you take the first step into the software world, it is almost impossible not to encounter the term DRY (Don't Repeat Yourself).
