|
|
|
## code review总结
|
|
|
|
> [基于此版本代码review](http://tech.pingansec.com/granite/project-judicature/-/commit/8d6f7661859bfbb261711693bf8c824b65fbaccf) (dev_court_notice分支,裁判文书相关代码)
|
|
|
|
|
|
|
|
### 设计
|
|
|
|
- 模块/策略解耦
|
|
|
|
- 复杂/不易理解的方法(动态条件)写详细点注释,包括流程等(可附上流程图链接)
|
|
|
|
- kiss: keep it sample stupid / 简单明了让人读懂
|
|
|
|
- 避免过度使用设计模式
|
|
|
|
- 方法传参,为方便不要影响单元测试,尽量细化简化(不要传resp,而实际里面只用到resp.text,使单元测试时又要额外创建resp去测试)
|
|
|
|
### 代码
|
|
|
|
- class名不使用动词
|
|
|
|
- Decrypt-> RespDecryptor ? WenshuDecryptor
|
|
|
|
- Dynamic-> DynamicPlugins
|
|
|
|
- Compress-> Compressor
|
|
|
|
- 规范驼峰命名?(保持响应data一致的表达,待思考)
|
|
|
|
- 变量强类型,尽量让IDLE能检测/暴露出来(FieldMap)
|
|
|
|
|
|
|
|
#### scrapy
|
|
|
|
- **settings相关,dev控制人为问题 -> (尝试)实践sys读DEV变量 (可作后续CI/CD检测点之一)**
|
|
|
|
- 用新框架basespider后,去掉_make_request_from的baidu请求的try catch兜底
|
|
|
|
- result_item由头传到尾优化-> 存初始meta用到的参数即可
|
|
|
|
- 无关代码清理 eg.去掉meta的proxy
|
|
|
|
- cookies_manager。。。的各种问题
|
|
|
|
|
|
|
|
### 流程
|
|
|
|
- data_pump
|
|
|
|
- init 初始化单次,init里的task_handler实例化后无法改kind -> (1,get_task不绑定实例化,优化至随feeding喂的data而变 ; 2,用popitem取task_params,扩展task_params)
|
|
|
|
- 流程图存jpg格式放doc目录,参考gravel |