Alanxtl commented on PR #3488: URL: https://github.com/apache/dubbo-go/pull/3488#issuecomment-4956620688
功能没问题,但感觉代码写的很不优雅,维护成本上升: - `IsEquals` 同时处理排除项、标量字段、Location 解析、参数快照和计数,职责过多。 - `Protocol/Username/Password/Path` 的比较是重复模板代码。 - `parseLocation` 名义上为了复用,但 `ToMap` 仍保留另一份相同解析逻辑。 - 注释称“不构造完整 map”,实际仍构造了 `leftParams`;只是从两张 map 降为一张。 - `ToMap` 和 `IsEquals` 分别维护 URL 字段语义,后续新增字段时很容易只改一处。 更清晰的结构应该是: ```go func equalScalars(left, right *URL, excluded keySet) bool func equalLocation(left, right string, excluded keySet) bool func equalParams(left, right *URL, excluded keySet) bool ``` 同时让 `ToMap` 复用 `parseLocation`。这样顶层 `IsEquals` 只负责组合三个判断,性能基本不受影响。 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
