这是一个 现代化 Django 项目生成器模板 ,基于 Cookiecutter 构建,可以一键生成生产级别的 Django 项目脚手架。#6509
Closed
chenziqi66 wants to merge 2 commits intocookiecutter:mainfrom
Closed
这是一个 现代化 Django 项目生成器模板 ,基于 Cookiecutter 构建,可以一键生成生产级别的 Django 项目脚手架。#6509chenziqi66 wants to merge 2 commits intocookiecutter:mainfrom
chenziqi66 wants to merge 2 commits intocookiecutter:mainfrom
Conversation
我现在有一个重构需求: 1. 操作可审计化 问题 :现在整个生成过程是"黑盒",做完了什么操作用户完全不知道 重构方向 : 给所有变更操作增加 审计追踪 能力 任何文件删除、内容修改、命令执行,都要被记录下来 最终输出一份"变更清单报告"(删了N个文件,改了M个配置) 支持后续"回滚"可能性的设计 2. 依赖去硬编码化 问题 :逻辑和执行方式强耦合 重构方向 : 把"要做什么"和"实际怎么执行"彻底分开 比如"删除文件"这个动作,可以有真实执行、打印模拟、记录日志三种实现 业务逻辑只声明"我要删除A",不关心具体是谁来删、怎么删 3. 错误自愈能力 问题 :任何一步出错就整个流程崩溃,前面做的改动都遗留一半 重构方向 : 引入补偿机制:第一步成功了,第二步失败,自动回滚第一步的操作 定义清晰的失败策略:遇到错误是立刻中止?还是跳过继续?还是回滚全部? 支持失败后从中断处继续执行,而不是从头再来 4. 条件判断去分支化 问题 :大量 if/elif/else 判断用户选择 重构方向 : 把每一个"特性选项"变成一个 独立的策略对象 比如 UseDocker、UseCelery、UseWebpack 各是一个策略类 每个策略自己声明:我要删什么文件、改什么配置、加什么依赖 主流程只负责按用户选择组装要执行的策略列表,再也没有 if 5. 副作用隔离 问题 :纯计算逻辑和文件系统操作混在一起 重构方向 : 严格划分"纯函数"和"有副作用的操作" 第一步:所有决策逻辑都在内存中完成(计算"最终应该删哪些文件") 第二步:统一执行所有副作用 两阶段之间可以插入:预览、人工确认、dry-run 等能力 约束: 1.只修改与代码重构直接相关的代码 2 必须为重构完的代码新增专门的测试用例
for more information, see https://pre-commit.ci
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
我现在有一个重构需求:
给所有变更操作增加 审计追踪 能力
任何文件删除、内容修改、命令执行,都要被记录下来
最终输出一份"变更清单报告"(删了N个文件,改了M个配置)
支持后续"回滚"可能性的设计
把"要做什么"和"实际怎么执行"彻底分开
比如"删除文件"这个动作,可以有真实执行、打印模拟、记录日志三种实现
业务逻辑只声明"我要删除A",不关心具体是谁来删、怎么删
引入补偿机制:第一步成功了,第二步失败,自动回滚第一步的操作
定义清晰的失败策略:遇到错误是立刻中止?还是跳过继续?还是回滚全部?
支持失败后从中断处继续执行,而不是从头再来
把每一个"特性选项"变成一个 独立的策略对象
比如 UseDocker、UseCelery、UseWebpack 各是一个策略类
每个策略自己声明:我要删什么文件、改什么配置、加什么依赖
主流程只负责按用户选择组装要执行的策略列表,再也没有 if
严格划分"纯函数"和"有副作用的操作"
第一步:所有决策逻辑都在内存中完成(计算"最终应该删哪些文件")
第二步:统一执行所有副作用
两阶段之间可以插入:预览、人工确认、dry-run 等能力
约束:
1.只修改与代码重构直接相关的代码
2 必须为重构完的代码新增专门的测试用例
Description
Checklist:
Rationale