prowide/prowide-core

View on GitHub
src/generated/java/com/prowidesoftware/swift/model/field/Field33Z.java

Summary

Maintainability
B
4 hrs
Test Coverage

Field33Z has 34 methods (exceeds 20 allowed). Consider refactoring.
Open

@SuppressWarnings("unused")
@Generated
public class Field33Z extends Field implements Serializable, AmountContainer {
    /**
     * Constant identifying the SRU to which this class belongs to.

    Define a constant instead of duplicating this literal "amount" 4 times.
    Open

            result.put(1, "amount");

    Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.

    On the other hand, constants can be referenced from many places, but only need to be updated in a single place.

    Noncompliant Code Example

    With the default threshold of 3:

    public void run() {
      prepare("action1");                              // Noncompliant - "action1" is duplicated 3 times
      execute("action1");
      release("action1");
    }
    
    @SuppressWarning("all")                            // Compliant - annotations are excluded
    private void method1() { /* ... */ }
    @SuppressWarning("all")
    private void method2() { /* ... */ }
    
    public String method3(String a) {
      System.out.println("'" + a + "'");               // Compliant - literal "'" has less than 5 characters and is excluded
      return "";                                       // Compliant - literal "" has less than 5 characters and is excluded
    }
    

    Compliant Solution

    private static final String ACTION_1 = "action1";  // Compliant
    
    public void run() {
      prepare(ACTION_1);                               // Compliant
      execute(ACTION_1);
      release(ACTION_1);
    }
    

    Exceptions

    To prevent generating some false-positives, literals having less than 5 characters are excluded.

    Rename method "amount" to prevent any misunderstanding/clash with field "AMOUNT" defined on line 109.
    Open

        public BigDecimal amount() {

    Looking at the set of methods in a class, including superclass methods, and finding two methods or fields that differ only by capitalization is confusing to users of the class. It is similarly confusing to have a method and a field which differ only in capitalization or a method and a field with exactly the same name and visibility.

    In the case of methods, it may have been a mistake on the part of the original developer, who intended to override a superclass method, but instead added a new method with nearly the same name.

    Otherwise, this situation simply indicates poor naming. Method names should be action-oriented, and thus contain a verb, which is unlikely in the case where both a method and a member have the same name (with or without capitalization differences). However, renaming a public method could be disruptive to callers. Therefore renaming the member is the recommended action.

    Noncompliant Code Example

    public class Car{
    
      public DriveTrain drive;
    
      public void tearDown(){...}
    
      public void drive() {...}  // Noncompliant; duplicates field name
    }
    
    public class MyCar extends Car{
      public void teardown(){...}  // Noncompliant; not an override. It it really what's intended?
    
      public void drivefast(){...}
    
      public void driveFast(){...} //Huh?
    }
    

    Compliant Solution

    public class Car{
    
      private DriveTrain drive;
    
      public void tearDown(){...}
    
      public void drive() {...}  // field visibility reduced
    }
    
    public class MyCar extends Car{
      @Override
      public void tearDown(){...}
    
      public void drivefast(){...}
    
      public void driveReallyFast(){...}
    
    }
    

    There are no issues that match your filters.

    Category
    Status