Skip to content

Latest commit

 

History

History
147 lines (115 loc) · 4.75 KB

File metadata and controls

147 lines (115 loc) · 4.75 KB

代码重构总结

重构目标

将原来的 1.py 文件(784行)拆分成多个更小、更易维护的模块。

重构结果

原始文件

  • 文件名: 1.py
  • 行数: 784行
  • 问题: 单个文件过大,包含多种功能,难以维护

重构后的模块结构

all_to_markdown/
├── __init__.py              # 包初始化文件 (30行)
├── main.py                  # 主程序入口 (20行)
├── utils.py                 # 工具函数模块 (50行)
├── roman_utils.py           # 罗马数字处理模块 (50行)
├── formula_processor.py     # 数学公式处理模块 (20行)
├── chapter_header.py        # 章节标题识别模块 (150行)
├── content_extractor.py     # 内容提取器模块 (400行)
├── text_processor.py        # 文本处理模块 (100行)
├── test_refactored.py       # 测试脚本 (150行)
├── README.md               # 说明文档
└── REFACTORING_SUMMARY.md  # 重构总结

总计: 约1170行(包含测试和文档),但功能模块化,每个文件职责单一

模块功能说明

1. utils.py (50行)

  • 功能: 通用工具函数
  • 包含:
    • replace_with_clean_blank() - 替换内容并清理空行
    • setup_logger() - 配置日志
    • new_len() - 计算文本长度(支持中英文)
    • 常量定义(SLICE_POINT1, SLICE_POINT2, SLICE_POINT3)

2. roman_utils.py (50行)

  • 功能: 罗马数字处理
  • 包含:
    • RomanNum.IntToRoman() - 整数转罗马数字
    • RomanNum.generate_roman_numerals() - 生成罗马数字集合
    • RomanNum.normalize_roman_numerals() - 标准化罗马数字

3. formula_processor.py (20行)

  • 功能: 数学公式处理
  • 包含:
    • FormulaProcessor.is_complex_formular() - 判断复杂公式
    • FormulaProcessor.restore_formular() - 恢复公式格式

4. chapter_header.py (150行)

  • 功能: 章节标题识别
  • 包含:
    • 多种标题识别规则(Markdown、文本、点号、括号等)
    • ChapterHeader.rule_based_is_chapter_header() - 基于规则的标题识别
    • ChapterHeader.llm_based_is_chapter_header() - 基于LLM的标题识别

5. content_extractor.py (400行)

  • 功能: 内容提取器
  • 包含:
    • ContentExtractor.get_html_table() - 提取HTML表格
    • ContentExtractor.get_markdown_table() - 提取Markdown表格
    • ContentExtractor.get_markdown_image() - 提取图片
    • ContentExtractor.get_markdown_formula() - 提取数学公式
    • ContentExtractor.get_markdown_code_block() - 提取代码块
    • ContentExtractor.full_process() - 完整处理流程

6. text_processor.py (100行)

  • 功能: 文本处理
  • 包含:
    • process_text_file() - 处理文本文件
    • marking_title() - 标记标题
    • test0() - 测试函数

7. main.py (20行)

  • 功能: 主程序入口
  • 包含: 使用示例

重构优势

1. 模块化

  • 每个模块职责单一,易于理解和维护
  • 代码结构清晰,便于定位问题

2. 可重用性

  • 各个功能模块可以独立使用
  • 可以根据需要导入特定功能

3. 可测试性

  • 每个模块都可以单独测试
  • 提供了完整的测试脚本

4. 可扩展性

  • 新增功能时只需要修改相应的模块
  • 不会影响其他模块的功能

5. 代码维护性

  • 从784行的大文件拆分成多个小文件
  • 每个文件都有明确的职责和功能

测试结果

运行 test_refactored.py 的结果:

✓ utils模块导入成功
✓ roman_utils模块导入成功
✓ formula_processor模块导入成功
✓ chapter_header模块导入成功
✓ content_extractor模块导入成功
✓ text_processor模块导入成功

✓ 文本替换测试: 通过
✓ 中文长度: 4, 英文长度: 2
✓ 罗马数字转换: 15 -> ['XV', 'xv']
✓ 复杂公式检测: True
✓ 章节标题识别: (True, 0)

✓ Markdown表格提取: 找到 2 个表格
✓ 图片提取: 找到 1 个图片
✓ 公式提取: 找到 1 个公式

所有测试完成!

使用方法

新的使用方式

# 导入整个包
from all_to_markdown import test0, ChapterHeader

# 或者导入特定模块
from all_to_markdown.content_extractor import ContentExtractor
from all_to_markdown.chapter_header import ChapterHeader

兼容性

原有的 1.py 文件仍然保留,可以继续使用,但建议迁移到新的模块化结构。

总结

重构成功将784行的单一文件拆分成多个职责明确的模块,提高了代码的可维护性、可测试性和可扩展性。所有原有功能都得到保留,同时提供了更好的代码组织结构。