构建灵活接口与运用鸭子类型:提升代码可维护性与扩展性
1. 编写突出接口优势的代码
在软件开发中,接口的清晰程度能反映出设计技能和自律性。尽管设计技能不断提升但难以达到完美,且当下出色的设计可能因未来需求而显得不足,不过这不应阻碍我们去创建接口。因为接口需要先存在才能不断演进,一个定义明确的接口比完美的接口更为重要。
1.1 创建明确的接口
编写代码时,目标是让代码在当下能正常运行,易于复用,并能适应未来的意外需求。创建类时,要明确声明其接口。公共接口的方法应具备以下特点:
- 明确标识:让人清晰知晓这是公共接口的方法。
- 关注“做什么”而非“怎么做”:方法应聚焦于实现的功能,而非具体的实现细节。
- 名称稳定:尽量使用在可预见范围内不会改变的名称。
- 优先使用关键字参数:提高代码的可读性和灵活性。
对于私有接口,同样要明确标识。测试可以作为文档来辅助这一工作,要么不测试私有方法,若要测试则需将其与公共方法的测试分开,避免他人因测试而意外依赖可变的私有接口。
在 Ruby 中,有 public
、 protected
和 private
三个关键字。它们有两个不同的作用:一是表明方法的稳定性,二是控制方法在应用其他部分的可见性。
关键字 | 方法稳定性 | 可见性 | 调用规则 |
---|---|---|---|