skynetcap/solanaj

TODO/Recommendations for SolanaJ (from the AI)

skynetcap opened this issue · 0 comments

1. Upgrade to Java 21:

  • Action: Migrate the codebase to Java 21 to access the latest features and improvements.
  • Benefit: Enhances performance, enables use of modern language features, and benefits from long-term support.
  • Consideration: Offer a compatibility layer or maintain a separate branch for users on older JDK versions, acknowledging that some companies adopt new versions slowly.

2. Refactor Exception Handling:

  • Action: Replace exception-based control flow with Optional, Either, or custom result types.
  • Benefit: Improves performance and code clarity, making error handling more predictable and functional.

3. Integrate Borsh Utility Classes:

  • Action: Implement Borsh serialization/deserialization utilities within SolanaJ.
  • Benefit: Ensures compatibility with Solana's data formats and simplifies interactions with on-chain programs.

4. Adopt Modern Java Features:

  • Action: Utilize features like records, sealed classes, and enhanced switch expressions.
  • Benefit: Reduces boilerplate code, improves type safety, and enhances readability.

5. Use Standard Java HTTP Client:

  • Action: Switch from OkHttp to java.net.http.HttpClient.
  • Benefit: Reduces external dependencies and leverages built-in HTTP/2 support and asynchronous capabilities.

6. Enhance Testing and Documentation:

  • Action: Write unit tests for all new methods and classes.
  • Action: Add Javadoc comments to all classes and methods.
  • Benefit: Improves code reliability and makes the library more approachable for users.

7. Codebase Cleanup and Style Improvements:

  • Action: Use tools like Spotless or Checkstyle to enforce consistent code formatting and style guidelines.
  • Action: Remove any @SuppressWarnings annotations and address the underlying issues.
  • Benefit: Increases maintainability and reduces potential bugs.

Feel free to pick up any of these issues, or discuss them. They will be the main considerations going into v2.