# Design

Rules that help you discover design issues.

## AvoidDeeplyNestedIfStmts

Since: PMD 5.1

Priority: Medium (3)

Avoid creating deeply nested if-then statements since they are harder to read and error-prone to maintain.

This rule is defined by the following Java class: net.sourceforge.pmd.lang.vm.rule.design.AvoidDeeplyNestedIfStmtsRule

This rule has the following properties:

Name | Default Value | Description | Multivalued
--- | --- | --- | ---
problemDepth | 3 | The if statement depth reporting threshold | no

Use this rule with the default properties by just referencing it:

    <rule ref="category/vm/design.xml/AvoidDeeplyNestedIfStmts" />

Use this rule and customize it:

    <rule ref="category/vm/design.xml/AvoidDeeplyNestedIfStmts">
        <properties>
            <property name="problemDepth" value="3" />
        </properties>
    </rule>

## CollapsibleIfStatements

Since: PMD 5.1

Priority: Medium (3)

Sometimes two consecutive ‘if’ statements can be consolidated by separating their conditions with a boolean short-circuit operator.

This rule is defined by the following Java class: net.sourceforge.pmd.lang.vm.rule.design.CollapsibleIfStatementsRule

Use this rule by referencing it:

    <rule ref="category/vm/design.xml/CollapsibleIfStatements" />

## ExcessiveTemplateLength

Since: PMD 5.1

Priority: Medium (3)

The template is too long. It should be broken up into smaller pieces.

This rule is defined by the following Java class: net.sourceforge.pmd.lang.vm.rule.design.ExcessiveTemplateLengthRule

This rule has the following properties:

Name | Default Value | Description | Multivalued
--- | --- | --- | ---
topscore |  | Deprecated Top score value | no
minimum | 1000.0 | Minimum reporting threshold | no
sigma |  | Deprecated Sigma value | no

Use this rule with the default properties by just referencing it:

    <rule ref="category/vm/design.xml/ExcessiveTemplateLength" />

Use this rule and customize it:

    <rule ref="category/vm/design.xml/ExcessiveTemplateLength">
        <properties>
            <property name="minimum" value="1000.0" />
        </properties>
    </rule>

## NoInlineJavaScript

Since: PMD 5.1

Priority: Medium High (2)

Avoid inline JavaScript. Import .js files instead.

This rule is defined by the following Java class: net.sourceforge.pmd.lang.vm.rule.design.NoInlineJavaScriptRule

Use this rule by referencing it:

    <rule ref="category/vm/design.xml/NoInlineJavaScript" />

## NoInlineStyles

Since: PMD 5.1

Priority: Medium High (2)

Avoid inline styles. Use css classes instead.

This rule is defined by the following XPath expression:

    //Text[matches(@literal, "<[^>]+\s[sS][tT][yY][lL][eE]\s*=")]

Use this rule by referencing it:

    <rule ref="category/vm/design.xml/NoInlineStyles" />