新手问题 Rails 用到过哪些元编程?

u1453357893 · 2016年03月04日 · 最后由 jasonliu 回复于 2016年03月15日 · 3094 次阅读

作为接触 rails 时间不长的小白来说还是不太希望去过早接触元编程,想知道 rails 当中有哪些用到“元编程”的案例?

你是指 Rails 实现,还是我们自己的 production code? 前者的话,到处都是,比如 scop就是所谓的类宏

企业级项目中基本用不到,代码清晰,简单,容易阅读最好。

#1 楼 @qinfanpeng 感谢你的回答,我所指的就是具体实现比如:scope/validates 等它们的内部都是怎么去实现的?也听到例如钩子方法,这个神一般存在的东西,在 rails 当中哪些实现用到了?

#2 楼 @riskgod 强烈赞同代码简洁、明了,维护他人写的一坨粑粑一样的代码,绝对想削他;虽然部分元编程会增加复杂度,但并非所有的技巧都会把代码弄晦涩。

#3 楼 @u1453357893 建议把你的 IDE 配置好,几乎所有方法都可以去看其源码实现的(个人用这个来代替文档),只不过有些实现很复杂,不那么好懂。

“根本没有什么元编程,只有编程而已” 可以动态定义、动态调用,执行,写代码的时候方便一点。

#2 楼 @riskgod 我觉得测试相对来说更重要一些。

#6 楼 @leekelby 妹夫 你这个逼装的给满分!不怕你骄傲!

#2 楼 @riskgod #4 楼 @qinfanpeng 这个并不绝对吧,我司项目里面就有少量的元编程,主要是提供项目间连接的基础服务,因为使用量大(几乎每个项目都要用这部分),大家也并没有表示很难理解的样子,倒是老老实实的写,估计有人会看到抓狂,然后重构,再然后极可能就变成现在的样子了

#9 楼 @xworm 考虑下是否可以写成一个 gem?

太多了,Rails 的原则就是 automagic,复杂度都堆给架构了。

我是觉得经常会用到。我已经数不清项目里有多少元编程的代码了。 比如需要给每个属性重复定义很相似的函数的时候。 不过不用也不是不能写出同样的功能我觉得。

我的老大是先让我去读 readable code,然后被他 review 代码。等学好了再读元编程就不会把代码搞砸了。

反对过度元编程,会把代码弄得不易读。 特别是对于 IDE 党,很多方法不能直接定位点击进入。 项目比较大的时候,改个东西都很难找,比如使用 send 调用方法,方法名是拼接出来的。

我项目里装逼用了 y-combinator 😄

Active Record 就用到了元编程,你可以看下源码。我不反对用元编程,但是有几个原则:

  • 理解什么是元编程
  • 不要在业务代码里面使用元编程,因为代码不仅仅是给自己看的
  • 写框架的话可以适量用元编程,因为可以用少的代码实现更复杂的功能,大多数人使用框架的时候几乎不会去看源代码,比如 rails
需要 登录 后方可回复, 如果你还没有账号请 注册新账号