google / google/google-java-format

Code Smells: Multiple Components Need Refactoring for Better Maintainability and Code Quality

Open
#1,199 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
6.2k
Forks
937
Avg merge
6m
Merged PRs (30d)
3

Description

## Description
Several code quality issues that would benefit from refactoring have been identified in the codebase. These issues impact maintainability and code readability.

## Areas Needing Attention

### 1. Complex Method in ImportOrderer
**Location**: com.google.googlejavaformat.java.ImportOrderer.scanImports
**Type**: Implementation Smell
**Problem**: Complex Method (Cyclomatic complexity of 15)

**Current Issues**:
- Multiple responsibilities mixed in single method
- High cyclomatic complexity makes code hard to understand
- Difficult to maintain and test
- Deep nesting levels

**Suggested Changes**:
- Extract import scanning logic into separate methods
- Create helper class for related data
- Split complex logic into smaller, focused methods
- Improve code organization with clear responsibilities

### 2. Magic Numbers in CommandLineOptionsParser
**Location**: com.google.googlejavaformat.java.CommandLineOptionsParser.parseRange
**Type**: Implementation Smell
**Problem**: Magic Number, Missing Proper Default Case

**Current Issues**:
- Usage of magic numbers (1, 2)
- Missing default case in switch statement
- Implicit meaning of numbers reduces readability
- Poor error handling

**Suggested Changes**:
- Introduce named constants for numeric values
- Add proper default case handling
- Improve error messaging
- Enhance code readability and maintainability

### 3. Long Statement in JavaCommentsHelper
**Location**: com.google.googlejavaformat.java.JavaCommentsHelper.rewrite
**Type**: Implementation Smell
**Problem**: Long Statement

**Current Issues**:
- Complex nested logic in single statement
- Multiple responsibilities combined
- Difficult to maintain and test
- Poor code organization

**Suggested Changes**:
- Extract methods for different responsibilities
- Improve method organization
- Enhance readability
- Better separation of concerns

## Expected Improvements
1. Better code readability
2. Easier maintenance
3. Improved testability
4. Clearer code organization
5. Better separation of concerns

## Requirements
- No functional changes should be introduced
- All tests must pass
- Follow project coding standards
- Maintain backward compatibility
- Changes should be purely refactoring-focused

## Next Steps
1. Review proposed changes
2. Evaluate impact on codebase
3. Consider integration strategy
4. Plan for pull request submission
5. Address any concerns raised by maintainers

## Additional Notes
- All changes will follow project's code style guidelines
- Focus is on improving code quality metrics
- No API changes planned
- Will maintain existing behavior

/label `refactoring` `code-quality` `implementation-smells`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.