国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Ruby > 正文

Ruby元編程的一些值得注意的地方

2020-10-29 19:37:25
字體:
來源:轉載
供稿:網友

  避免無限循環的元編程。

    寫一個函數庫時不要使核心類混亂(不要使用 monkey patch)。

    代碼塊形式最好用于字符串插值形式。
        當你使用字符串插值形式,總是提供 __FILE__ 和 __LINE__,使得你的回溯有意義。

 class_eval 'def use_relative_model_naming?; true; end', __FILE__, __LINE__

        define_method 最好用 class_eval{ def ... }

    當使用 class_eval (或者其他的 eval)以及字符串插值,添加一個注釋塊使之在插入的時候顯示(這是我從 rails 代碼學來的實踐):

 # from activesupport/lib/active_support/core_ext/string/output_safety.rb UNSAFE_STRING_METHODS.each do |unsafe_method|  if 'String'.respond_to?(unsafe_method)  class_eval <<-EOT, __FILE__, __LINE__ + 1   def #{unsafe_method}(*args, &block)  # def capitalize(*args, &block)   to_str.#{unsafe_method}(*args, &block) # to_str.capitalize(*args, &block)   end          # end   def #{unsafe_method}!(*args)    # def capitalize!(*args)   @dirty = true       # @dirty = true   super         # super   end          # end  EOT  end end

    避免在元編程中使用 method_missing,它使得回溯變得很麻煩,這個習慣不被列在 #methods,拼寫錯誤的方法可能也在默默的工作,例如 nukes.launch_state = false。考慮使用委托,代理或者是 define_method ,如果必須這樣,使用 method_missing ,
        確保 也定義了 respond_to_missing?
        僅捕捉字首定義良好的方法,像是 find_by_*

主站蜘蛛池模板: 桓台县| 科技| 宜良县| 吉安县| 永善县| 拜泉县| 全南县| 中方县| 广宗县| 綦江县| 临武县| 商都县| 湘潭县| 中卫市| 来凤县| 元阳县| 漠河县| 永嘉县| 鹤峰县| 阳谷县| 灌云县| 牟定县| 柳江县| 乐都县| 离岛区| 莒南县| 龙州县| 舟山市| 凤庆县| 铜山县| 时尚| 牙克石市| 江油市| 宝丰县| 慈利县| 余庆县| 金溪县| 元江| 柞水县| 卢湾区| 松江区|