API 设计的艰难抉择
💡
原文中文,约5400字,阅读约需13分钟。
📝
内容提要
在过去三个月,我对Silly进行了重构,统一了代码风格,明确了命名规则和API设计,优化了命名空间结构,简化了API,采用面向对象风格,解决了连接管理和数据读取的复杂性,提高了代码的可读性和维护性。
🎯
关键要点
- 过去三个月对Silly进行了重构,统一了代码风格,明确了命名规则和API设计。
- 重构过程中重新明确了许多规范和原则,特别是命名规则和命名空间。
- 所有导出函数控制在两个单词以内,以兼容多样命名风格和Lua习惯。
- Silly的所有库位于silly命名空间下,核心能力放在根命名空间,其他功能拆分到二级命名空间。
- 命名空间设计旨在快速定位常用功能,避免命名空间过多导致混乱。
- API设计方面,重构为面向对象风格,简化了连接管理和数据读取的复杂性。
- 重构过程中,简化了读取函数,合并了读一行和读指定字节的功能。
- 引入了conn:read的严格读取模式,确保读取到完整数据或返回错误。
- 新增conn:unreadbytes接口,返回当前连接剩余未读取数据的字节数。
- 重新审视GC引用链设计,考虑到挂起的协程管理和内存清理的简洁性。
❓
延伸问答
Silly重构的主要目标是什么?
Silly重构的主要目标是统一代码风格,明确命名规则和API设计,优化命名空间结构,简化API,提升代码可读性和维护性。
在Silly的重构中,命名规则有什么特别之处?
所有导出函数的名称控制在两个单词以内,以兼容多样命名风格和Lua习惯,避免模块功能过于复杂。
Silly的API设计采用了什么样的风格?
Silly的API设计采用了面向对象风格,简化了连接管理和数据读取的复杂性。
conn:read的严格读取模式是怎样的?
conn:read的严格读取模式要求要么读取到完整的数据量,要么返回错误,不会返回部分数据。
Silly重构中如何处理未读取数据的字节数?
新增了conn:unreadbytes接口,用于返回当前连接剩余未读取数据的字节数。
重构过程中对GC引用链的设计考虑了哪些因素?
重构过程中重新审视了GC引用链设计,考虑了挂起协程的管理和内存清理的简洁性。
➡️