Skip to content

Gendarme.Rules.Smells.AvoidCodeDuplicatedInSiblingClassesRule(git)

Sebastien Pouliot edited this page Mar 2, 2011 · 1 revision

AvoidCodeDuplicatedInSiblingClassesRule

Assembly: Gendarme.Rules.Smells
Version: git

Description

This rule looks for code duplicated in sibling subclasses.

Examples

Bad example:

public class BaseClassWithCodeDuplicated {
    protected IList list;
}
public class OverriderClassWithCodeDuplicated : BaseClassWithCodeDuplicated {
    public void CodeDuplicated ()
    {
        foreach (int i in list) {
            Console.WriteLine (i);
        }
        list.Add (1);
    }
}
public class OtherOverriderWithCodeDuplicated : BaseClassWithCodeDuplicated {
    public void OtherMethod ()
    {
        foreach (int i in list) {
            Console.WriteLine (i);
        }
        list.Remove (1);
    }
}

Good example:

public class BaseClassWithoutCodeDuplicated {
    protected IList list;
    protected void PrintValuesInList ()
    {
        foreach (int i in list) {
            Console.WriteLine (i);
        }
    }
}
public class OverriderClassWithoutCodeDuplicated : BaseClassWithoutCodeDuplicated {
    public void SomeCode ()
    {
        PrintValuesInList ();
        list.Add (1);
    }
}
public class OtherOverriderWithoutCodeDuplicated : BaseClassWithoutCodeDuplicated {
    public void MoreCode ()
    {
        PrintValuesInList ();
        list.Remove (1);
    }
}

Source code

You can browse the latest source code of this rule on github.com

Clone this wiki locally