为什么文档是你最好的朋友

Written by

in

(以及如何创建在更新后继续有效的解决方案)

“应用程序只能使用公共 API,并且必须在当前发布的操作系统上运行。”苹果应用程序审查指南

如果您曾经开始使用新框架并发现自己在想:“现在我自己就能理解所有内容,阅读文档太长了”,那么您绝对不是一个人。我们中的许多人都有一种天生的调查本能:先尝试,然后再查看说明。这是完全正常的。

然而,在这个阶段,很容易得意忘形,最终陷入代码运行良好但可能依赖于系统的非明显功能的情况。

为什么有时仅仅“自己解决”还不够?

框架,尤其是封闭框架,是复杂的、多层的系统。它们经常隐藏内部逻辑和优化:

* 公共文档中没有描述;
* 不保证该行为将来会维持;
* 可能会随着新版本的发布而改变;
* 可能包含开发人员已知但尚未修复的功能。

当我们凭直觉行事时,存在根据随机观察而不是根据记录的规则构建架构的风险。这可以使代码对更新更加敏感。

文档不是限制,而是可靠的支持

框架开发人员创建手册来帮助我们。在文档中执行操作,我们得到:

* 稳定;
* 支持;
* 可预测的系统行为。

如果超出这些限制,我们就会承担额外的风险,并且维护此类代码会变得更加困难。

实验?当然。但要了解边界。
好奇心是开发人员的一大特质。探索和尝试新事物是绝对必要的。但这里有一个小小的愿望:

最舒适的实验方法是依赖最佳实践。

该文档是一张地图,显示哪些路径最安全并受到创建者的支持。

外部观点:专家建议

我们经常向经验丰富的同事学习:

*他们开设有用的课程,
* 在会议上发言,
* 写精彩的书籍和博客,
* 分享他们独特的愿景。

他们中的许多人分享了真正宝贵的经验。但值得记住的是:如果作者的方法与官方文档相矛盾,它们可能会变得脆弱。

有时,这种“经验模式”:

* 仅适用于特定版本的框架;
* 对更新敏感;
* 在异常情况下可能会出现不可预测的行为。

向社区学习是伟大且有益的。但任何建议,即使是最权威的建议,都应该仔细检查官方手册。

关于 SOLID 的一些知识

SOLID 原则中的三个想法完美地补充了这种方法:

* 开放/封闭原则:尝试通过公共 API 扩展行为,如果可能,不依赖隐藏的实现。
* 里氏替代原则:依赖合同,而不是具体执行。否则,幕后的变化可能会导致意想不到的困难。
* 依赖倒置:建立对抽象的依赖,而不是细节。

在实践中,这意味着与框架的内部、未记录的细节相关联会使系统变得脆弱。
基于公共接口和合约,我们得到:

* 更好地将代码与框架的更改隔离;
* 易于测试;
* 架构的可预测性和可靠性。

如果出现错误怎么办?

也有这样的情况,一切都按照规则去做,但结果却没有达到预期。框架不断发展,但并不总是完美的。在这种情况下:

* 构建一个重现问题的最小示例。
* 确保仅使用记录的 API。
* 发送错误报告 – 开发团队一定会感谢您的工作并尽力提供帮助。

如果该示例依赖于解决方法,那么开发人员提供支持将会更加困难。

如何充分利用框架

*请参阅文档。
* 遵循作者的指南和建议。
* 在所描述的功能范围内进行实验。
* 检查来自互联网和官方来源的建议。
* 本地化错误,同时尊重框架契约。

结论

框架是强大的工具,有自己的游戏规则。如果忘记它们,我们的代码就会变得过于脆弱。但我们都希望创建的产品能长久存在,而不是在每次小更新后都需要紧急修正。

手册和文档是极好的支持,有助于创建真正可靠的解决方案。

来源

https://developer.apple.com/app-store/review/guidelines/
https://en.wikipedia.org/wiki/SOLID
https://en.wikipedia.org/wiki/API
https://en.wikipedia.org/wiki/RTFM

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

DemensDeum
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.