ruby的特性-如何写出专业的ruby代码

  1.  require,load用于包含文件;include,extend则用于包含模块
    require加载文件一次,load加载文件多次
    require加载文件时可以不加后缀名,load加载文件时必须加后缀名
    require一般情况下用于加载库文件,而load用于加载配置文件
  2. ruby 只支持单层继承,但可以通过max-in模块来实现类似于多层继承的功能
  3. ruby可以给具体实力对象添加方法,我们称之为单例方法(变量也一样)
  4. 常量定义在类和模块中,不能定义在方法中,类或者模块外访问常量,需要使用::
  5. ruby只能重写方法,不能重载方法
  6. ruby中判断某对象是否有某方法直接使用respond_to?(),如 respond_to?(:to_str),而不是使用is_a?(String)
  7. ruby的模块功能非常强大,能动态的继承方法,动态载入代码;并且,ruby还为模块提供了生命周期的hook(included 和 append_features)
  8. 类主体不是专用的,比如validates_presence_of :attrs 可以放在类的任何地方
  9. 区块和lambda表达式,能让不同的code 在同一语境下执行,非常强大
  10. boolean表达式使用 && || , 控制流程control flow 使用 and, or 
  11. 如果只有单行的if ... end ,直接使用  code here if  expressions 或者  some_conditions and codes
  12. 不要使用 unless ... else  ... end , 使用 if ... else ...end 代替
  13. 类定义中使用 attr_reader 和 attr_write 等dsl语言
  14. single-line的 each 应该使用 { ...  }, 如  [1 , 2 , 3].each { |x|  puts x }, 不要使用 do ... end
  15. 不要使用for in 等语句,使用 each 代替
  16. 不要写 return , 如何可以避免
  17. 注释 TODO: 功能需要补充  OPTIMIZE: 表明此处代码有可能引起性能问题 FIXME: 提醒升级代码时应该注意此处code HACK:代码需要重构 REVIEW: 代码修改,都需要确认是否运行
  18. 给Class重写to_s方法
  19. 不要拼接字符串,要使用"#{}"
  20. 如果字符串中没有特殊字符串,则使用 '', 不要使用 ""
  21. 对象变量,不要使用{} , 如下面定义的to_s方法
    def to_s
      "#@attr_one #@attr_two"
    end
  22. 使用String#<< 代替 String#+
  23. 使用%w
    STATES = %w(draft open closed)
  24. %() 用于需要""的字符串,否则,最好使用"" , '', 如下是%()的应用场景
    %(<tr><td class="name">#{name}</td>)
  25. %r()与//的正则表达式选择的关系,也同上理,多个//应该选择%r(),否则,尽量使用//
  26. 使用类变量代替全局变量
  27. rails 安全的方法之一
    class PostsController < ActionController::Base
      def create
        Post.create(post_params)
      end
      
      def update
        Post.find(params[:id]).update_attributes!(post_params)
      end
    
      private
        def post_params
          params[:post].slice(:title, :content)
        end
    end





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值