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引用链设计,考虑了挂起协程的管理和内存清理的简洁性。

➡️

继续阅读