chore: add code optimization plan
Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat>
This commit is contained in:
111
PLAN.md
111
PLAN.md
@@ -0,0 +1,111 @@
|
|||||||
|
# Code Optimization Plan
|
||||||
|
|
||||||
|
This document outlines planned optimizations to reduce boilerplate code and improve maintainability through the use of derive macros and utility crates.
|
||||||
|
|
||||||
|
## 1. Add Utility Crates to Cargo.toml
|
||||||
|
|
||||||
|
**Files affected:**
|
||||||
|
- `Cargo.toml`
|
||||||
|
|
||||||
|
**Changes:**
|
||||||
|
- Add `thiserror` for streamlined error handling
|
||||||
|
- Add `derive_more` for automatic trait implementations
|
||||||
|
|
||||||
|
## 2. Replace Manual Debug Implementations with Derives
|
||||||
|
|
||||||
|
**Files affected:**
|
||||||
|
- `src/meta_plugin/digest.rs` - Hasher enum
|
||||||
|
- `src/meta_plugin/command.rs` - MetaPluginCommand struct
|
||||||
|
- Various other structs that manually implement Debug
|
||||||
|
|
||||||
|
**Changes:**
|
||||||
|
- Replace manual `fmt::Debug` implementations with `#[derive(Debug)]`
|
||||||
|
- Remove redundant debug formatting code
|
||||||
|
|
||||||
|
## 3. Replace Manual Default Implementations with Derives
|
||||||
|
|
||||||
|
**Files affected:**
|
||||||
|
- `src/meta_plugin/hostname.rs` - HostnameMetaPlugin
|
||||||
|
- `src/meta_plugin/read_time.rs` - ReadTimeMetaPlugin
|
||||||
|
- `src/meta_plugin/read_rate.rs` - ReadRateMetaPlugin
|
||||||
|
- `src/meta_plugin/shell.rs` - ShellMetaPlugin
|
||||||
|
- `src/meta_plugin/shell_pid.rs` - ShellPidMetaPlugin
|
||||||
|
- `src/meta_plugin/keep_pid.rs` - KeepPidMetaPlugin
|
||||||
|
- `src/meta_plugin/user.rs` - UserMetaPlugin
|
||||||
|
|
||||||
|
**Changes:**
|
||||||
|
- Use `#[derive(Default)]` where appropriate
|
||||||
|
- Use `#[derive(SmartDefault)]` from smart-default for complex defaults
|
||||||
|
- Remove manual Default implementations
|
||||||
|
|
||||||
|
## 4. Use thiserror for Error Types
|
||||||
|
|
||||||
|
**Files affected:**
|
||||||
|
- `src/modes/server/mcp/tools.rs` - ToolError enum
|
||||||
|
- `src/services/error.rs` - CoreError enum (already uses thiserror, check for consistency)
|
||||||
|
- Any other custom error types
|
||||||
|
|
||||||
|
**Changes:**
|
||||||
|
- Replace manual Error trait implementations with `#[derive(thiserror::Error)]`
|
||||||
|
- Use `#[from]` attribute for automatic From implementations
|
||||||
|
- Ensure consistent error message formatting
|
||||||
|
|
||||||
|
## 5. Use derive_more for Common Trait Implementations
|
||||||
|
|
||||||
|
**Files affected:**
|
||||||
|
- Types that wrap other types and need common trait implementations like:
|
||||||
|
- `Display`, `From`, `Into`, `Deref`, `DerefMut`
|
||||||
|
- Specifically look for wrapper types that could benefit from:
|
||||||
|
- `derive_more::Display`
|
||||||
|
- `derive_more::From`
|
||||||
|
- `derive_more::Into`
|
||||||
|
- `derive_more::Deref`
|
||||||
|
- `derive_more::DerefMut`
|
||||||
|
|
||||||
|
## 6. Enhance Serde Usage
|
||||||
|
|
||||||
|
**Files affected:**
|
||||||
|
- Response types in `src/modes/server/common.rs`
|
||||||
|
- Configuration types throughout the codebase
|
||||||
|
- Any structs that manually implement serialization/deserialization
|
||||||
|
|
||||||
|
**Changes:**
|
||||||
|
- Ensure consistent use of `#[derive(Serialize, Deserialize)]`
|
||||||
|
- Use serde attributes for customization instead of manual implementations
|
||||||
|
- Standardize field naming conventions
|
||||||
|
|
||||||
|
## 7. Improve Strum Usage for Enums
|
||||||
|
|
||||||
|
**Files affected:**
|
||||||
|
- Enum types that have string conversions throughout the codebase
|
||||||
|
- `src/compression_engine.rs` - CompressionType
|
||||||
|
- `src/meta_plugin/mod.rs` - MetaPluginType
|
||||||
|
|
||||||
|
**Changes:**
|
||||||
|
- Use `strum` macros consistently for enum string conversions
|
||||||
|
- Replace manual `to_string()` implementations with derives
|
||||||
|
- Ensure all enum variants are properly handled
|
||||||
|
|
||||||
|
## 8. Code Organization Improvements
|
||||||
|
|
||||||
|
**Files affected:**
|
||||||
|
- All source files
|
||||||
|
|
||||||
|
**Changes:**
|
||||||
|
- Group derives consistently at the top of struct/enum definitions
|
||||||
|
- Standardize import ordering (std, external, internal)
|
||||||
|
- Ensure consistent use of utility crates across the codebase
|
||||||
|
|
||||||
|
## Implementation Priority
|
||||||
|
|
||||||
|
1. **High Priority**: Add crates to Cargo.toml and fix compilation issues
|
||||||
|
2. **Medium Priority**: Error handling improvements with thiserror
|
||||||
|
3. **Medium Priority**: Debug and Default derive implementations
|
||||||
|
4. **Low Priority**: derive_more and other quality-of-life improvements
|
||||||
|
|
||||||
|
## Testing Strategy
|
||||||
|
|
||||||
|
- Run tests after each major change category
|
||||||
|
- Ensure no functionality is broken by derive replacements
|
||||||
|
- Verify error messages remain clear and informative
|
||||||
|
- Check that serialization/deserialization behavior is preserved
|
||||||
|
|||||||
Reference in New Issue
Block a user