code review总结
基于此版本代码review (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