1. SDD

SDD是AI编程时代的顶层开发范式,并非单纯的数据层定义,也是一套完整的、前置性的开发约束体系,核心宗旨为规格先行、代码后置,从需求源头统一开发标准,杜绝AI编码跑偏、需求失真、代码逻辑混乱等问题。

SDD并非狭义的数据结构定义,而是涵盖需求规约、数据模型、接口契约、校验规则、验收标准、任务拆解的全维度规范,相当于整个开发流程的“总纲领”,也是编写AI提示词的核心依据、约束TDD与Vibe Coding的核心框架。在AI编码场景下,SDD相当于给AI设定编码护栏,从根源规避代码发散、测试无依据、实现偏离需求等问题,也是生成高质量AI提示词的基础。

  1. TDD

TDD是经典的工程化开发手段,诞生于传统软件开发阶段,核心逻辑为测试先行、编码在后,属于SDD规格的落地执行环节,也是AI代码校验的核心准则。

开发前先基于SDD制定的规格、约束、验收标准,编写可执行的测试用例,确立功能合格标尺;在AI编码场景下,TDD测试用例既可由人工编写,也可基于SDD规格生成提示词交由AI生成,后续所有AI生成的代码,都以“通过测试用例”为唯一合格标准,全程保证代码严格贴合SDD规格,杜绝无效代码、逻辑漏洞,保障AI生成代码的质量与功能一致性。

  1. Vibe Coding

Vibe Coding是AI时代兴起的轻量化编码方式,核心特点是AI提示词驱动、快速落地、极简实现、不做冗余设计,属于代码落地的执行手段,而非重构优化环节。

SDD、TDD、Vibe Coding 三者核心关联

自上而下、层层约束、闭环联动的完整开发链路,更是AI提示词生成代码的全流程准则,层级与协作关系清晰明确:

  1. 层级关系:顶层约束→执行标准→AI落地实现
  • SDD为顶层框架:定全局规则、定验收标准、定数据与接口契约,划定整个开发的边界与方向,是编写AI提示词的核心依据,也是后续所有环节的基础;

  • TDD为执行标尺:将SDD的规格转化为可验证的测试用例,把抽象标准变成具象的判断依据,约束AI生成代码的方向,作为AI代码校验的唯一标准;

  • Vibe Coding为AI落地手段:依托SDD规约编写提示词,在TDD测试约束下,由AI快速生成核心代码,是流程里的编码执行环节。

  1. 联动闭环逻辑

SDD输出完整规格与约束 → 基于SDD规格编写提示词,AI生成TDD测试用例(确立合格标准) → 依据SDD+TDD标准优化提示词,AI完成Vibe Coding核心代码生成 → 运行TDD用例校验AI代码 → 符合SDD规格则完成核心实现 → 后续代码重构优化。

实战代码对应环节注解

1. SDD规格落地片段(数据规约+规则定义)

基于业务需求,定义用户数据输入输出结构、全局校验规则,要求使用Python dataclass实现,严谨约束数据类型与业务阈值。

from dataclasses import dataclass
from typing import Optional, Dict, Any

# SDD:定义输入数据结构(数据契约),AI依据SDD提示词生成
@dataclass
class UserInputData:
    """用户输入数据模型"""
    username: str
    age: int
    email: str
    phone: Optional[str] = None

# SDD:定义输出数据结构(结果契约),AI依据SDD提示词生成
@dataclass
class UserProcessResult:
    """用户数据处理结果模型"""
    is_valid: bool  # 数据是否合法
    msg: str  # 处理提示信息
    data: Optional[Dict[str, Any]] = None  # 处理后数据

# SDD:定义全局业务校验规则(核心规约),AI依据SDD提示词生成
class UserDataRule:
    MIN_AGE = 18
    MAX_AGE = 60
    ALLOW_EMAIL_SUFFIX = ["@qq.com", "@163.com", "@gmail.com"]

2. TDD测试用例

基于上述SDD数据规则,使用pytest编写测试用例,覆盖合法数据、年龄非法、邮箱非法三类场景,完成业务规则的校验测试。

import pytest
from sdd_data import UserInputData, UserDataRule

# TDD:测试合法数据(符合SDD规则),AI依据提示词生成
def test_user_data_valid():
    user_data = UserInputData(
        username="test_user",
        age=25,
        email="test@163.com",
        phone="13800138000"
    )
    assert UserDataRule.MIN_AGE <= user_data.age <= UserDataRule.MAX_AGE
    assert any(user_data.email.endswith(suffix) for suffix in UserDataRule.ALLOW_EMAIL_SUFFIX)
    assert len(user_data.username) >= 3

# TDD:测试年龄非法数据(违背SDD规则),AI依据提示词生成
def test_user_age_invalid():
    user_data = UserInputData(
        username="test_user",
        age=17,
        email="test@163.com"
    )
    assert user_data.age < UserDataRule.MIN_AGE

# TDD:测试邮箱非法数据(违背SDD规则),AI依据提示词生成
def test_user_email_invalid():
    user_data = UserInputData(
        username="test_user",
        age=25,
        email="test@xxx.com"
    )
    assert not any(user_data.email.endswith(suffix) for suffix in UserDataRule.ALLOW_EMAIL_SUFFIX)

3. Vibe Coding核心实现

基于上述SDD数据模型、TDD测试标准,编写用户数据校验处理类,实现逐项数据校验、结果返回功能。

from sdd_data import UserInputData, UserProcessResult, UserDataRule

class UserDataProcessor:
    """用户数据处理核心类"""
    def validate_data(self, user_data: UserInputData) -> UserProcessResult:
        """数据校验+处理核心逻辑"""
        # 用户名校验
        if len(user_data.username) < 3:
            return UserProcessResult(is_valid=False, msg="用户名长度不能小于3位")
        
        # 年龄校验
        if not (UserDataRule.MIN_AGE <= user_data.age <= UserDataRule.MAX_AGE):
            return UserProcessResult(is_valid=False, msg=f"年龄需在{UserDataRule.MIN_AGE}-{UserDataRule.MAX_AGE}周岁之间")
        
        # 邮箱格式校验
        if not any(user_data.email.endswith(suffix) for suffix in UserDataRule.ALLOW_EMAIL_SUFFIX):
            return UserProcessResult(is_valid=False, msg="邮箱格式不合法,请使用指定邮箱后缀")
        
        # 合法数据处理
        process_data = {
            "username": user_data.username.strip(),
            "age": user_data.age,
            "email": user_data.email.strip(),
            "phone": user_data.phone.strip() if user_data.phone else "未填写"
        }
        return UserProcessResult(is_valid=True, msg="数据校验通过", data=process_data)

4. 功能验证

编写主函数测试代码,传入合法与非法两组数据,打印AI生成代码的处理结果,验证代码是否符合预期。

if __name__ == '__main__':
    # 初始化处理器
    processor = UserDataProcessor()
    
    # 测试合法数据
    valid_data = UserInputData(username="developer", age=28, email="dev@gmail.com", phone="13900139000")
    result = processor.validate_data(valid_data)
    print("合法数据处理结果:", result)
    
    # 测试非法数据(年龄不达标)
    invalid_data = UserInputData(username="test", age=17, email="test@qq.com")
    result = processor.validate_data(invalid_data)
    print("非法数据处理结果:", result)
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐