在晚上不失眠的情况下调用私有方法

主要观点:展示一种在编写软件时看似违规调用私有方法但能安心的简单方式,以及如何通过在启动时将假设编码来解决此类问题。
关键信息

  • 作者在为 Rails 内置静态文件服务器写自定义包装器时,需调用私有方法ActionDispatch::FileHandler#find_file,虽知不应调用但还是写了代码让其工作,send用于调用私有方法且存在代码风险。
  • 作者最初纠结是否内联功能并提前掌控,最终决定在初始化器中编码假设,如config/initializers/invariant_assumptions.rb中,若 Rails 方法签名改变则会抛出异常,提前预警。
  • 写此笔记比解决问题花费时间长 20 倍。
    重要细节
  • 私有方法调用存在风险,调用者可能不会被 Rails 团队支持。
  • 初始化器中的代码在不同环境下有不同处理,非生产环境会检查方法参数是否符合假设。
  • 作者还提供了通过 RSS、Mastodon 订阅网站,以及注册 newsletter 和 podcast 等获取信息的方式。
阅读 8
0 条评论