Skip to content

Conversation

@alwinsanil
Copy link

Refactoring of code done to address some design smells and implementation smells.

Implementation smells fixed:

Complex Conditional: getBoolean method in JSONArray.
Techniques: Extract Method, Decompose Conditional, Introduce Explaining Variable
• Extract Method - Created isFalse() and isTrue() methods to handle the complex conditionals
• Decompose Conditional - Broke down the complex if-conditions into simpler methods
• Introduce Explaining Variable - Used isBooleanString to clarify the string check logic

Complex Conditional: nextTo method in JSONTokener
Techniques: Extract Method, Decompose Conditional, Introduce Explaining Variable
• Extract Method - Created isDelimiter() helper methods to encapsulate delimiter checks
• Decompose Conditional - Broke down complex OR conditions into simpler checks
• Introduce Explaining Variable - Used isEndOfInput to clarify the zero-character check

Magic Number: toString method in JSONArray
Techniques: Introduce explaining variable
• Introduce explaining variable (for magic number 2) - Explain the multiplier purpose
• Introduce explaining variable (for magic number 16) - Explain minimum buffer size

Design smells fixed:

Deficient Encapsulation in JSONMLParserConfiguration
Technique: Move Field/Method
Cyclical Dependency between XML and XMLTokener
Technique: Extract Class
Missing Hierarchy of method similar in JSONArray, JSONObject and JSONString
Technique: Replace conditional with Polymorphism
Broken Hierarchy between JSONStringer and JSONWriter

@stleary
Copy link
Owner

stleary commented Mar 27, 2025

What version of Java does this project require?

"At the present time Java 8 is required to run the unit tests and the Maven Repository release. However, the library can be compiled and executed with Java 6."

How do you decide which pull requests to accept

"Otherwise, a good heuristic to follow is: "If it's not broken, don't fix it". This includes performance improvements, refactoring, formatting, and design updates. Before submitting such PRs, consider opening an issue to discuss your idea."

@stleary stleary closed this Mar 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants