Extract Method
Documentation Index
Fetch the complete documentation index at: https://docs.sourcery.ai/llms.txt
Use this file to discover all available pages before exploring further.
Sourcery refactoring id: extract-method
Section titled “Sourcery refactoring id: extract-method”Description:
Section titled “Description:”Extracts complex pieces of functions into their own methods
Requires Sourcery Pro
Before:
Section titled “Before:”def func(self): if typed and self.current_char == "(": pos = self.pos try: pass except DefinitionError as exParamQual: self.pos = pos try: pass except DefinitionError as exNoPtrParen: self.pos = pos msg = "If parenthesis in noptr-declarator" if paramMode == "function": msg += " (e.g., 'void (*f(int arg))(double)')" prevErrors.append((exNoPtrParen, msg)) header = "Error in declarator" raise self._make_multi_error(prevErrors, header)After:
Section titled “After:”def func(self): if typed and self.current_char == "(": pos = self.pos try: pass except DefinitionError as exParamQual: self.pos = pos try: pass except DefinitionError as exNoPtrParen: self._extracted_from_func_11(pos, exNoPtrParen)
def _extracted_from_func_11(self, pos, exNoPtrParen): self.pos = pos msg = "If parenthesis in noptr-declarator" if paramMode == "function": msg += " (e.g., 'void (*f(int arg))(double)')" prevErrors.append((exNoPtrParen, msg)) header = "Error in declarator" raise self._make_multi_error(prevErrors, header)Explanation:
Section titled “Explanation:”Methods are much more readable if they are short, and if every line of code is at the same rough level of abstraction.
This refactoring takes long blocks from functions and extracts them into their own method. It will only trigger for large blocks that are possible to extract, and where the remainder of the method is sufficiently long.
It is recommended that you then rename the extracted function and any arguments
that have not been automatically named. Here a suitable method name would be
handle_noptr_exception.