SuperAPI AI 工具集

Encapsulating Complexity

编程与开发

查看项目

更新于 10-16 02:35

技能介绍

本资料是 obra/clank 技能库中的一条编码原则:封装复杂度。核心主张是隐藏“怎么做”,只暴露“做什么”,让代码在领域层(Users、Orders、Config)而非实现层(dict、SQL 行、JSON 文件)工作。封装的目的是既创造多种实现可能,又限制使用方式:实现细节一旦隐藏,就能在不动调用方的前提下更换实现。

适用时机:设计新类或模块、创建公共 API、审查抽象泄漏、重构以提升可维护性。违规信号包括:调用方知道存储格式(JSON、SQL、文件)、接口暴露数据库或文件操作、返回原始 dict 或行而不是领域对象、调用方自行拼接 SQL 或文件路径、从 JSON 改成 YAML 就让调用方崩溃、更换数据库需要改所有调用点、测试必须了解内部数据结构、方法名泄露实现(saveToJSON、queryDatabase)、公开字段暴露内部状态。

自检问题:接口暴露的是“怎么做”还是“做什么”;不改调用方能否更换实现;调用方是在领域层还是实现层工作;返回值是否泄露内部结构。资料给出示例:ConfigManager 带 json_path 参数、get_value 原始键访问、save_to_json 方法名,改为 Config 后构造函数不再指定格式、get_timeout/set_timeout 是领域操作、save 与加载持久化均为私有方法,从 JSON 换成 YAML 时调用方代码不变。用户管理示例中,返回数据库行 dict 和 update_user_column 被替换为返回 User 领域对象与 update_email。

资料还强调关注点分离,把数据访问、业务计算、格式化、文件 I/O 拆成独立类再由编排类组合。要隐藏的内容包括:存储格式、数据库细节、数据结构、算法与复杂度、文件路径、外部 API 细节、复杂状态。技法有私有实现方法、适配器或包装模式、抽象数据类型、为复杂子系统提供 Facade。接口设计原则:按“做什么”命名、接收和返回领域对象、在单一抽象层级上工作。资料以分层图示意应用层、领域层、持久化层逐层隐藏下层复杂度。

限制与完整性说明:资料为原则与示例讲稿,具体实现代码多为占位或片段,未提供完整可运行项目、依赖版本、安装命令、测试套件或性能数据;适用语言与框架范围暂未提供;收费与平台信息暂未提供。