Questions tagged «hooks»

9
在版本控制挂钩中运行单元测试是一种好习惯吗?
从技术角度来看,可以添加一些前/后推钩,以在允许某些特定的提交合并到远程默认分支之前运行单元测试。 我的问题是-最好将单元测试保留在构建管道中(因此,将损坏的提交引入仓库),还是最好不要允许“不良”的提交发生。 我确实意识到我不受这两种选择的限制。例如,在将合并提交提交到仓库之前,我可以允许所有提交分支和测试。但是,如果您必须在这两种解决方案之间进行选择,那么您将选择哪种解决方案,以及出于哪些确切原因?

4
插件应该使用什么:钩子,事件或其他东西?
考虑一个允许插件对其程序流做出反应的应用。 我知道两种方法可以实现:钩子和事件 1.挂钩 在主程序流中使用调用来清空函数。插件可以覆盖这些功能。 例如,Drupal CMS实现了可用于模块和主题的挂钩。这是在file_copy函数中如何实现钩子的示例。 function file_copy(stdClass $source, $destination = NULL, $replace = FILE_EXISTS_RENAME) { // ... [File copying routine] // Inform modules that the file has been copied. module_invoke_all('file_copy', $file, $source); return $file; // ... } 模块可以实现modulename_file_copy($file, $source)将由module_invoke_allin 调用的功能file_copy。该功能完成后,file_copy将恢复执行。 2.活动 拥有应用程序分发事件,插件可以监听该事件。收到已订阅的事件后,插件将拦截程序流并执行必要的操作。 例如,一个jQuery画廊插件Fotorama 实现了几个事件。例如,这show是触发fotorama:show事件的方法的一部分。 that.show = function (options) { …

3
挂钩何时才是正确的设计选择?
我曾经在一个大型的Rails应用程序上工作,在该应用程序中ActiveRecord回调的使用非常猖ramp且令人痛苦。保存记录通常会带来意想不到的副作用,这是对系统进行推理的挑战。 同时,我已经看到钩子作为继承的一部分发挥了很好的作用(例如,使用模板方法的父类允许子类添加专门的行为,而无需了解父内部的内部)。 (例如,在emacs模式被激活时运行钩子,允许用户围绕该模式添加自定义行为)。 我意识到Rails应用程序和Lisp解释器是完全不同的系统,但是我很好奇,当人们决定挂钩是否是解决他们所面临的问题的正确设计选择时,人们是否会参考任何众所周知的标准。 让我大吃一惊的主题是可预测性。钩子的滥用似乎会导致远距离的怪异动作和令人惊讶的行为,而正确使用钩子可能会导致可预测的框架而无需紧密耦合。 由于我还只有几年的编程生涯,因此我在很多方面都认为自己是菜鸟,并且怀疑人们对此主题已经投入了很多思考。什么准则可以指导这一决定?
10 hooks 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.