rails 自己就有啊Rails::Info
又来了,以前提倡写代码必须写注释,后来提出使代码能直接表达其意(特别是像 ruby 这样强表达力的),然后就干脆啥注释都不写了。
每个人(团队)都有自己的原则,我的原则是尽量少些,用代码表达,当然一定会有那些有注释更便于理解的时候就写点。
没分享带不起劲啊,还是要有人能出来分享。
10 点下班的伤不起
帮顶
第 1w 帖,好巧
复杂的未必好,大道至简才是美。C 可以学,以后想做 IOS 也可以有个底,当然 ruby 也是比较容易入手的。
@poshboytl 可以去当影帝了
通过 arel 封装一层 DSL 只要 50-60 行代码,而且异常的简单
zsh 和 fish 都不错
归根结底在于一切皆对象,本质上来说没有类方法和实例方法,只有属于对象的方法。
#24 楼 @iBachue 做法好像是在解析一遍语法,取得默认值。
以前 java 我也干过这个事情,java 的反射没法取到形参的参数名,因为形参的名字本身无意义,形参类型是有意义的,编译成 class 字节码文件后,class 内部不存储方法的形参名。那个时候找到个 hack 的技巧,class 文件在方法内部会放一个局部变量和形参同名,利用 javassist 可以取到那些信息。
具体可以看 http://kenbeit.com/posts/62/javassist%E7%9A%84%E5%AD%A6%E4%B9%A0
办法还是有的,不过很烦。就是先取得这个方法的参数的默认值。调用方法的时候把拿到的默认值再传过去。
可以参考 https://rubygems.org/gems/rdp-arguments 或者以前 merb 里面有个 get_args 的功能 http://stackoverflow.com/questions/622324/getting-argument-names-in-ruby-reflection/625222#625222
这个应该都能取道方法默认值
虽然这帖子不讨论领域模型问题,不过既然提到了,就大家探讨一下。领域模型的理解问题就是分久必合,合久必分的情况。在一段时间某一种会被认为比较正确的。最早大家 java 刚刚起来,一股脑的搞贫血模型,再堆上 N 个 xx 层。后来慢慢觉得这种做法又太烦了,就出了其他的模型。到了 rails 里刚开始流行 fat model, thin controller,于是乎写 rails 都往 model 里塞代码。又过了一阵子,觉得这样又不行了,model 越来越大,难以维护,于是乎又开始提炼,然后就出现了7 Patterns to Refactor Fat ActiveRecord Models这样的文章,这种情况就会反反复复的发生。
其实这些想多了也就那样,重要的是不被任何一种理论和传统束缚,不要过份设计,也不要过份重构,当然也不能把代码塞在一个地方,合理的组织代码,结构清晰,测试保证,其他的当作浮云吧。
反向代理
理论的说不清,拿实际例子说说
比如你有 User,想细分一个 Guest 出来,Guest 有自己的一堆业务逻辑,但是他的结构和 User 是一致的。可以考虑用 STI,STI 的 model 在数据库只会用一张表,表中会用 type 来表示类型,也就类名。
Polymorphic Association,看名字就知道是用在关联上的,这个例子太多了,比如 Tag,Picture,Comment,用户可以有 tag,产品可以有 tag,文章可以有 tag,Tag 本身是一个 model,但是其他 model 都会用到它,这时候可以用 Polymorphic Association。通常会写成 taggable, imageable, commentable,数据库里会有一个 xxx_type 和 xxx_id,来表示关联者的类型和其实例的 id。
屌丝级别分析完毕,求大神布道理论知识。
你想问的是 STI 和 Polymorphic Association 的区别还是 STI 和 Polymorphic 的区别?
敲整个 rubychina 太长了
大赞