Uploaded image for project: 'Rules Repository'
  1. Rules Repository
  2. RSPEC-4144 Methods should not have identical implementations
  3. RSPEC-5585

Python: Functions and methods should not have identical implementations

    XMLWordPrintable

    Details

    • Type: Language-Specification
    • Status: Active
    • Resolution: Unresolved
    • Labels:
      None
    • Impact:
      Unknown 'null' severity
    • Likelihood:
      Unknown 'null' severity

      Description

      When two functions or methods have the same implementation, either it was a mistake - something else was intended - or the duplication was intentional, but may be confusing to maintainers. In the latter case, one implementation should invoke the other. Numerical and string literals are not taken into account.

      Noncompliant Code Example

      class MyClass:
          code = "bounteous"
      
          def calculate_code(self):
              self.do_the_thing()
              return self.__class__.code
      
          def get_name(self):  # Noncompliant
              self.do_the_thing()
              return self.__class__.code
          
          def do_the_thing(self):
              pass  # on purpose
      

      Compliant Solution

      class MyClass:
          code = "bounteous"
      
          def calculate_code(self):
              self.do_the_thing()
              return self.__class__.code
      
          def get_name(self):
              return self.calculate_code()
          
          def do_the_thing(self):
              pass  # on purpose
      

      Exceptions

      No issue will be raised on empty methods/functions and methods/functions with only one line of code.

        Attachments

          Activity

            People

            Assignee:
            Unassigned Unassigned
            Reporter:
            nicolas.harraudeau Nicolas Harraudeau (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Dates

              Created:
              Updated: