移植代码
此技能用于将代码从一种编程语言移植到另一种语言。
输入
- 目标语言
- 要移植的源文件或代码
流程
首先创建当前代码中关键功能的概要。注意以下内容:
- 代码或单元测试中涵盖的边缘情况
- 所使用的库以及目标语言中推荐的等效库
使用结构化用户输入或提问工具,逐一检查每个使用的库,并与用户确认应使用哪个等效库。
提供额外选项:
- 桩(stub)库功能
- 从头实现
接下来移植单元测试。以此作为验证移植代码的基础。
最后使用之前准备的概要移植代码。利用单元测试来指导修复,迭代此过程。
通用指南
- 使用目标语言中常见的模式。
- 使用目标语言中常见的命名约定。
- 移植后的代码应镜像原始代码,以便用户轻松找到等效功能。
- 保留原始代码中的日志和注释。
- 注意任何新的边缘情况。
- 注意代码结构的任何变化,以帮助用户定位。
成功标准
- 单元测试通过(如果存在)。
- 代码检查通过(如果存在)。
- 所有关键功能均已实现。
- 所有已识别的边缘情况均得到处理。
- 所有需要的库均已安装并准备就绪。
示例
示例原始代码
/**
* 计算产品的最终价格,包括任何折扣和税费。
*
* 如果折扣无效则抛出错误。
*/
export function calculatePrice(basePrice: number, discount: number | null, taxRate: number): number {
let discountAmount = 0;
if (discount) {
if (discount >= 1) {
// 如果折扣配置错误,可能会导致负价格。在向用户显示无效价格之前停止。
throw new Error('无效折扣');
}
discountAmount = basePrice * discount;
}
const taxAmount = (basePrice - discountAmount) * taxRate;
return (basePrice - discountAmount) + taxAmount;
}
示例概要
关键功能:
calculatePrice函数接受基准价格、折扣百分比和税率,计算产品的最终价格。- 边缘情况:
- 折扣可以为 null
- 如果折扣大于或等于 1,则抛出异常以防止无效价格。
- 边缘情况:
示例移植代码
def calculate_price(base_price: float, discount: Optional[float], tax_rate: float) -> float:
"""
计算产品的最终价格,包括任何折扣和税费。
如果折扣无效则引发异常。
"""
discount_amount = 0
if discount is not None:
if discount >= 1:
# 如果折扣配置错误,可能会导致负价格。在向用户显示无效价格之前停止。
raise Exception('无效折扣')
discount_amount = base_price * discount
tax_amount = (base_price - discount_amount) * tax_rate
return (base_price - discount_amount) + tax_amount
示例响应
我已将代码移植到 Python。
calculatePrice现在变成了calculate_price