High Quality program code should be split into Reusable Components that can be shared and/or sold.
For following reasons:
- speed of creation & modification: if we buy part of code, we can use it instead of creating from scratch - this saves time if done well,
- lower costs for higher quality: programmers who specialize generally have better price/quality ratio in their field, when compared to other competitors... let's not forget however that it's natural human desire to improve and broaden horizons,
- trust & robustness: when software parts come from known source, they have chance to be trusted & tested enough to not fail too often. they might have also well-documented characteristics - including contracts perhaps,
- efficiency: reusable components should be optimized, with data structures & algorithms selected properly. if they are optimized not the way we prefer, we can change implementation - that is, exchange software part for different,
- integrity: reusable software coming from the same source often conform to coding standards of that source, thus is compatible with rest... as it should.
- sharing & sales: components can be shared with others, to help... or sold. this helps whole team.
in my opinion every program class is a reusable component. even if it 'has' other reusable components as it's parts.
i think that 'Ola AH' Programming Language & it's Distribution Infrastructure should support sharing / sale of reusable components.
See also: , SOLID.