Source code cloning, also known as copy and paste programming is believed to be a major threat to software systems, mostly the ones currently in their implementation phase. The problem is often overlooked due to the true danger lies in the clones' long-term existence, specifically in their unmonitored evolution – hence the immediate negative impact cannot be observed. When a clone instance of a given method needs maintenance (bug fixing) or further code development (enhancement), usually the tasks would require to be performed on the other clone instances as well for the consistency to remain.
Code clones (the products of code cloning or copy and paste programming) can be a menace when it comes to long-term source code maintainability. While they seem harmless at first, they will do their damage after a few development iterations – exactly when it is too late for an easy fix. Neglecting to manage clone instances along with each other during a bug fix or a feature development of any of them will likely result in the inconsistency of the source code.
Estimating development costs could be a problematic task. There are a huge number of details that should be taken into account for the calculation, the most important of which probably is the maintainability of the source code. It is axiomatic that maintainability has an immediate effect on development cost, because the less maintainable the software system is, the more expense is needed to develop it.
Lines of Code is one of the most controversial source code metrics in software engineering practice. It is relatively easy to calculate, understand and use by the different stakeholders for a variety of purposes – that is why it is the most frequently applied measure in software estimation, quality assurance and many other fields. Yet, there is a high level of variability in the definition and calculation methods of the metric which makes it difficult to use it as a base for important decisions. Furthermore, there are cases when its usage is highly questionable – such as direct programmer productivity assessment.