# 处理 C# Return 语句 - Product Requirement Document

## Overview
- **Summary**: 修复 CSharpStringExtractor 无法处理 C# `return` 语句中字符串字面量的问题，确保 return 语句中的字符串表达式能够被正确提取
- **Purpose**: 解决 `return "参数错误";` 等语句中字符串字面量无法被提取和处理的问题
- **Target Users**: 使用 CSharpStringExtractor 进行 C# 代码字符串字面量提取和国际化处理的开发者

## Goals
- 修改 `isStatementToProcess` 函数，允许处理以 "return " 开头的语句
- 修改 `extractValueExpression` 函数，正确提取 return 语句中的字符串值表达式
- 确保提取的字符串表达式不包含 "return" 关键字本身
- 保持现有功能不被破坏

## Non-Goals (Out of Scope)
- 不修改其他语句类型的处理逻辑
- 不添加额外的新功能，只修复 return 语句的处理问题
- 不重构整个代码库

## Background & Context
- CSharpStringExtractor 是一个用于提取 C# 代码中字符串字面量的工具
- 当前版本在处理 `return "参数错误";` 语句时无法正确提取字符串
- 测试用例 `should handle return statement` 专门测试这个功能
- 需要保持与项目现有架构和编码规范一致

## Functional Requirements
- **FR-1**: `isStatementToProcess` 函数应能识别并允许处理以 "return " 开头的语句
- **FR-2**: `extractValueExpression` 函数应能从 return 语句中正确提取字符串值表达式
- **FR-3**: 提取的字符串表达式不应包含 "return" 关键字
- **FR-4**: return 语句的处理应与其他语句类型保持一致的行为

## Non-Functional Requirements
- **NFR-1**: 代码修改应保持可维护性和性能
- **NFR-2**: 修改不应影响现有功能
- **NFR-3**: 代码应与项目现有编码风格保持一致

## Constraints
- **Technical**: 使用 TypeScript，遵循现有代码架构
- **Business**: 需要通过现有所有测试用例，特别是 "should handle return statement" 测试
- **Dependencies**: 依赖现有的 CSharpStringExtractor.ts 代码结构

## Assumptions
- return 语句的结构是 "return " + 字符串表达式 + ";"
- return 语句中的字符串表达式不包含复杂的条件表达式（测试用例只覆盖简单情况）
- 现有代码结构是稳定的，可以在其基础上进行修改

## Acceptance Criteria

### AC-1: isStatementToProcess 能识别 return 语句
- **Given**: 一个包含 "return " 开头的语句字符串
- **When**: 调用 `isStatementToProcess` 函数检查该语句
- **Then**: 函数应返回 true，表明该语句需要处理
- **Verification**: `programmatic`
- **Notes**: 确保只识别 "return " 开头的语句，避免误识别其他以 "return" 开头的标识符

### AC-2: extractValueExpression 能正确提取 return 语句的字符串
- **Given**: 一个完整的 return 语句，如 `return "参数错误";`
- **When**: 调用 `extractValueExpression` 函数处理该语句
- **Then**: 函数应返回字符串表达式 `"参数错误"`，不包含 "return" 关键字
- **Verification**: `programmatic`
- **Notes**: 同时确保 valueExpressionIndex 指向字符串的起始位置

### AC-3: 完整的 return 语句处理流程正确
- **Given**: 代码字符串 `return "参数错误";`
- **When**: 调用 `extractStrings` 函数处理该代码
- **Then**: 返回的 snippets 数组应包含一个 snippet，其 originalCode 为 `"参数错误"`，originalIndex 为字符串在原代码中的起始位置
- **Verification**: `programmatic`
- **Notes**: 这就是测试用例 "should handle return statement" 的要求

### AC-4: 现有功能不受影响
- **Given**: 修改后的代码库
- **When**: 运行所有现有测试用例
- **Then**: 所有测试用例都应通过
- **Verification**: `programmatic`

## Open Questions
- 是否需要处理更复杂的 return 语句，如 `return condition ? "a" : "b";`？（测试用例未覆盖此场景）
