BeautifulSoap
BeautifulSoap
这家伙很懒,什么也没写!

注册于 3年前

回答
2
文章
0
关注者
0

哎,这贴看下来真的觉得楼上太多人都对本地程序的开发没了解了

hook 这个词和翻译没关系,lz 明显没有做过原生类软件的开发,hook 不等于 callback,lz 搞错了这两者的区别了,所以对 hook 的理解有点偏差

HOOK 一般是用来形容软件开发中与 "截取" 有关的技术的词语。注意不是回调,而是截取,这里的截取尤其是指截取 API

比如在 Windows 下,你可以写个程序把自己的 dll 注入到目标进程中,这样每当目标程序调用系统的 API 或自己程序内部的函数的时候,你都可以直接截取到目标程序的 API 调用,你可以在程序调用 API 前随意修改传给系统的参数,也可以修改系统 API 返回给目标程序的数据。利用 HOOK 你可以在不修改目标程序的情况下,任意修改它的所有输入输出。这就叫 HOOK

Android 的 Xposed 框架就是个 HOOK 框架,可以不修改 app 任意 HOOK 安卓系统的 API,功能才如此强大

所以钩子这个词其实是非常形象且准确的,你把钩子扔进目标程序里(甚至直接扔到整个系统里都行),当对应的 API 被调用时候,就自动上钩了,上钩后执行你的程序,这就是“钩子”这个词的意思

框架里说的钩子同理,只不过框架的钩子是开发者事先就埋好的你可以随意调用。实现方式可能和回调很像,但并不等于回调

lz 的这个问题的根本原因在于,代码作者提交的新代码没有经过格式化,这新代码合并到主干分支后,如果别人再格式化的话容易导致合并冲突

解决办法就是从根本上禁止提交没有经过格式化的代码,这样就能保证所有人提交的新代码都格式化过

首先强制每个人使用统一个代码格式化风格,然后在每次提 pull request 或 pr 有新提交的候用 GitHub action 强制校验代码风格,如果校验失败(比如 pr 提交的代码没有没格式化或不符合风格)的话,直接禁止 pr 合并,只有代码风格检验通过才行

发布
问题