模块职责、配置与可维护性
Git、代码规范与项目工程化#Python全栈#第六阶段#Git、代码规范与项目工程化#模块职责、配置与可维护性约 611 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
为什么应把业务规则与命令行、HTTP 等输入输出入口分开?
追问 同一功能需要被脚本、网页和定时任务复用时,如何避免复制业务逻辑?
如何区分业务逻辑、数据访问和外部系统适配的职责?
追问 不使用大型架构框架,怎样通过少量模块和明确参数保持合理依赖方向?
一个通用 utils.py 越来越大时,应该怎样重构?
追问 怎样按业务含义拆分,而不是只按文件大小拆分?如何避免拆出更多循环依赖?
全局可变状态会给项目带来哪些问题?
追问 多次调用、并发执行和检查代码时,共用列表、缓存或客户端分别可能产生什么干扰?
配置应如何从代码常量、配置文件与环境变量中选择来源?
追问 覆盖优先级、默认值和必填项如何约定?如何避免本地缺失配置被静默掩盖?
为什么读取配置后应该做类型转换和有效性校验?
追问 字符串形式的布尔值、端口和超时应该如何解析?错误配置何时报告更容易定位?
.env 与 .env.example 应分别包含什么?
追问 示例文件如何帮助新成员配置环境?怎样在不提交真实凭据的前提下表达必填项?
异常应该在哪一层捕获和转换?
追问 业务异常、外部依赖故障和程序缺陷为什么不宜统一吞掉并返回空值?
工程项目中应该怎样组织日志,而不是到处使用 print?
追问 日志级别、模块名称、异常堆栈与请求标识各有什么作用?日志中哪些内容应避免记录?
怎样设计一个便于替换外部依赖的函数或类?
追问 把客户端或存储对象作为参数传入,与函数内部固定创建相比,对复用和验证有什么影响?