[Dev] Sometimes, code duplication may need to be allowed.

Ideally, duplicated code leads to maintenance nightmare. So, Not-allowing-duplicated-code always seems to be better. But, in this article, I want to say that in some cases, code-duplication needs to be allowed.

In practice, lots of people who has different ability work together in one source code branch. In this case, if code duplication is not allowed, all developer should search all sources to find the reusable module. Let’s image that there are thousands modules. Finding appropriate module is not easy. And lots of people try to customize(modify) the module for easy-reuse. If all engineers are enough good at programming and enough time to consider code quality then we don’t need to worry about “customization”. But, it cannot be in some cases – especially, product development. Skill level of engineers are always various and they are always pushed by project schedule. So, the shared module tends to become worse and worse in terms of its quality. (It’s normal in large-size-project).

Here is merits of allowing code duplication.(There are lots of well-known-disadvantage of allowing code duplication. So, let’s talk about only “Merits”.)
  * There is no dependency among people. So, it’s very easy to work in parallel.
  * Merging is easy, because of no-dependency and no-conflicts.
  * Bug from mistake affects only limited area. So, detecting issued part is easy.

So, practically, we need to consider what should be reused(shared) and what shouldn’t.

Here is my opinion about this.
Codes that should not be duplicated.
  – codes for interface with external modules.(In App. point of view, OS, filesystem and so on can be external modules)
  – codes that are used very frequently. (ex. code for getting lengh of string. – strlen)
  – stable codes.
  – … (anything else???)

Codes that can be duplicated.
  – parts that should be done in parallel with tight schedule and enough human resources.
  – codes that are customized very often.
  – … (anything else???)

Hmm… I need further study…


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s