国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

5個常見的Rails開發誤區

開發 后端
本文作者是一名Rails開發者,他總結了在Rails開發過程中的一些常見誤區。文章內容如下:

本文作者是一名Rails開發者,他總結了在Rails開發過程中的一些常見誤區。文章內容如下:

我使用Rails已經有一段時間了,在這期間我看了大量的Rails項目,下面的這五個常見的誤區,我幾乎在每一個Rails代碼中都看到過。

1. 沒有 schema 規范的遷移

數據模型是應用程序的核心。沒有schema的約束,你的數據會因為項目代碼上的bugs而慢慢變得糟糕,直到你無法相信庫中的任何字段。這里有一個 Concact Schema:

  1. create_table "contacts" do |t|  
  2.     t.integer  "user_id" 
  3.     t.string   "name" 
  4.     t.string   "phone" 
  5.     t.string   "email" 
  6. end 

上面哪些需要更改呢?通常一個Contact必須依附于User,并且會有一個name 屬性,這可以使用數據庫約束來確保。可以添加“:null => false”,這樣即使驗證代碼存在bugs,我們依然可以確保模型一致性,因為如果違反了null約束,數據庫并不會允許模型保存這些數據。

  1. create_table "contacts" do |t|  
  2.     t.integer  "user_id":null => false 
  3.     t.string   "name":null => false 
  4.     t.string   "phone" 
  5.     t.string   "email" 
  6. end 

TIPS:使用“:limit => N”規范你的string類型字段的大小。Strings 默認255個字符,而phone字段應該不需要這么長吧!

2. 面向對象編程

大多數Rails開發人員并不寫面向對象的代碼。他們通常會在項目中寫面向MVC的Ruby代碼(把模型和控制器分開寫在合適的位置)。通常是在lib目錄下添加帶有類方法的工具模塊,僅此而已。但開發人員往往需要花費2-3年才能認識到“Rails就是Ruby。我完全可以創建一些簡單的對象,并且不一定按照Rails建議的方式去封裝它們。”

TIPS:對你調用的第三方服務使用facade(外觀模式)。通過在測試中提供mock facade,你就不用在你的測試集中真的去調用這些第三方服務了。

3. 在 helpers中連接HTML

如果你正在創建helper,恭喜,至少說明你正在試圖讓你的視圖層更整潔。但是開發人員經常不知道一些使用helpers創建標簽的常見方式,這就導致了槽糕的字符串連接或者糟糕的插值形式。

  1. str = "<li class='vehicle_list'> " 
  2. str += link_to("#{vehicle.title.upcase} Sale", show_all_styles_path(vehicle.id, vehicle.url_title))  
  3. str += " </li>" 
  4. str.html_safe 

看吧,相當糟糕,而且容易導致XSS安全漏洞!讓 content_tag 來拯救這些代碼吧。

  1. content_tag :li:class => 'vehicle_list' do 
  2.   link_to("#{vehicle.title.upcase} Sale", show_all_styles_path(vehicle.id, vehicle.url_title))  
  3. end 

TIPS:現在就開始在helper中使用blocks(代碼塊)吧。當產生內嵌的HTML時,嵌入的blocks更自然、更貼切。

4. Giant Queries(大查詢,比如載入整張表的查詢)會把一切都加載到內存

如果你需要修正數據,你只需要遍歷并且修正它,對嗎?

  1. User.has_purchased(true).each do |customer|  
  2.   customer.grant_role(:customer)  
  3. end 

假設你有個***別客戶的電商網站,假設每個用戶對象需要500字節,上面的代碼會在運行的時候消耗500M內存。

下面是更好的方式:

  1. User.has_purchased(true).find_each do |customer|  
  2.   customer.grant_role(:customer)  
  3. end 

find_each使用 find_in_batches 每次取出1000條記錄,非常有效的降低了對內存的需求。

TIPS:使用 update_all 或者原始 SQL 語句執行大的更新操作。學習SQL可能需要花費點時間,不過帶來的好處是明顯的:你會看到100x的性能改善。

5.  代碼審查

我猜你會使用GitHub,并且我進一步猜測你不會去pull requests(GitHub上的申請代碼合并操作)。如果你需要花費一到兩天去構建一個新特性,那么到一個分支上去做吧,然后發送一個 pull request。團隊會審查你的代碼,并且給出一些你沒有考慮到的改進或者***特性的建議。我保證這樣會提高你的代碼質量。我們在TheClymb項目中90%的改動都是通過這種方式完成的,并且這是100%值得去做的一個經驗。

TIPS:不要沒有經過任何測試就合并你的pull request。測試對保證應用的穩定性非常有價值,并且可以讓你踏實地睡一個好覺。

英文原文:Five Common Rails Mistakes

原文鏈接:http://www.iteye.com/news/25074

【編輯推薦】

  1. Java端通過CXF調用.NET端服務
  2. Java線程池的原理及幾類線程池的介紹
  3. Java中的異常對程序效率有無影響
  4. JVM的內存溢出異常
  5. Java簡單的網絡爬蟲實現
責任編輯:林師授 來源: ITEYE
相關推薦

2020-01-14 17:31:46

數據科學誤區人工智能

2018-04-20 11:19:17

Java誤區細節

2017-11-20 14:18:32

2017-11-20 08:56:54

克服容器誤區

2018-04-23 10:28:01

Java誤區

2022-05-27 12:40:25

前端測試項目

2014-07-17 09:08:20

Android L

2019-07-01 13:43:14

公共云云計算云平臺

2022-07-31 23:53:37

Linux操作系統設備

2022-07-31 23:54:24

Linux操作系統

2021-10-08 09:18:37

物聯網 LPWANIOT

2019-12-26 15:12:14

Html5框架Web

2013-05-17 14:10:38

2020-11-30 10:41:25

CIO首席信息官IT文化

2023-03-09 09:38:01

數據科學

2020-11-30 12:57:27

IT文件數字化IT組織

2020-10-09 06:54:22

通信專業誤區

2018-08-17 08:26:25

2011-07-15 10:42:27

電子配線架

2010-10-26 13:45:01

Oracle數據庫備份
點贊
收藏

51CTO技術棧公眾號

久久久影院免费| 久久久久国产精品厨房| 国产一区在线不卡| 欧美日韩精品在线播放| 欧美黑人性猛交| 91精品国产乱| 国产精品一区二区久久久| 免费在线观看毛片网站| 91视频免费观看| 欧美视频在线观看一区二区| 国产欧美日韩高清| 国产婷婷一区二区三区| 免费亚洲电影| 青青草免费在线| 国产精品亚洲片在线播放| 久久嫩草精品久久久精品一| 日韩av在线直播| 日本视频一区二区不卡| 欧美日韩中文字幕一区二区| 久久婷婷国产麻豆91天堂| 天天爱天天做天天操| 搞黄网站在线看| 日韩精品久久一区二区| 日本19禁啪啪吃奶大尺度| 国产精品18hdxxxⅹ在线| 久久久久综合网| 日韩av不卡在线播放| 快射视频在线观看| 99精品视频网| 欧美一卡在线观看| 依依成人在线| 一精品久久久| 欧美日韩综合不卡| 中文字幕免费在线视频| 国语精品一区| 精品国产乱码久久久久久久久| 在线观看亚洲视频啊啊啊啊| 欧美xoxoxo| 91精品蜜臀在线一区尤物| 午夜啪啪福利视频| www.26天天久久天堂| 久久精品一区二区三区不卡牛牛| 色婷婷久久久综合中文字幕| 同产精品九九九| 高清av免费一区中文字幕| 1pondo在线播放免费| 亚洲国产国产亚洲一二三| 亚洲电影免费观看高清完整版在线观看| 国产av不卡一区二区| 亚洲在线视频| 久久久国产91| 成人av小说网| 香蕉精品视频在线观看| 91精品国产一区二区三区| 男人的天堂在线视频| 精品一区二区免费| 久久综合免费视频影院| 日本一区二区久久精品| 国产丝袜在线| 日韩免费视频一区二区| 久久视频这里有精品| 国产999精品久久| 国产91免费观看| 蜜桃视频在线入口www| 色噜噜狠狠成人中文综合| 神马午夜伦理影院| 国产伦精品一区二区三区视频| 69国产精品成人在线播放| 日韩黄色影院| www国产精品av| 男人天堂999| 亚洲高清网站| 日韩av电影免费观看| 精久久久久久久久久久| 日本xxxxxxxxxx75| 夜间精品视频| 欧美日韩免费观看一区| 欧美大胆视频| 国产视频久久久久| 黄色av网址在线免费观看| 91蜜桃传媒精品久久久一区二区 | 午夜亚洲成人| www.在线成人| 麻豆最新免费在线视频| 亚洲久久一区二区| 一区不卡视频| 亚洲无线视频| 国产美女视频免费| 国产精品国产自产拍高清av| 一区一区视频| 久久男人中文字幕资源站| 高清色视频在线观看| 欧美一区二区三区久久精品茉莉花| 亚洲日本欧美日韩高观看| 免费观看成年在线视频网站| 欧美一级欧美三级| 精品国产一区二区三区四区阿崩| 欧美曰成人黄网| 日韩一区二区三区在线免费观看| 欧美午夜在线播放| 久久精品国产免费看久久精品| 成人免费在线视频网址| 日韩一区免费| 91久久精品日日躁夜夜躁国产| 成年永久一区二区三区免费视频 | 女生影院久久| 国产精品亚洲欧美导航| 国内精品免费**视频| jk破处视频在线| 亚洲香蕉在线观看| 成人高清免费在线| 色综合中文字幕| 啊v视频在线一区二区三区| 免费av播放| 亚洲精品一区二区三区影院| 国产亚洲欧美日韩在线观看一区二区| 欧美三日本三级少妇三99| 国产精品色婷婷| 99视频精品免费| 久久久久久97三级| 2020国产在线视频| 欧美一级免费大片| 日韩成人动漫在线观看| 97视频在线播放| 91九色鹿精品国产综合久久香蕉| 中日韩美女免费视频网站在线观看| 国产精品人成电影| 污污软件在线观看| 精品国产欧美一区二区三区成人| 精品91视频| 久久99精品久久久久久久青青日本| 亚洲激情中文| 欧美性猛交xxx乱久交| 国产欧美一区二区精品性色 | sdde在线播放一区二区| 国产不卡在线观看| 精品国产乱码| 免费在线观看的毛片| 欧美成va人片在线观看| 日av在线播放中文不卡| 亚洲大胆精品| 久久久久国产精品免费| 天堂va欧美ⅴa亚洲va一国产| 中文字幕欧美日韩一区二区三区| 欧美熟乱第一页| 欧美第十八页| 91青娱乐在线视频| 57pao国产成人免费| 精品久久网站| 热久久精品免费视频| 久久视频在线免费观看| 99re这里都是精品| 大胆高清日本a视频| 日韩精品在线观看av| 久久亚洲美女| 久久av综合网| 日韩电影中文字幕| 蜜臀久久99精品久久久久久9| 国产成人无码a区在线观看视频| 国产精品婷婷午夜在线观看| 中文在线а√天堂官网| 国产精品a久久久久久| 一区二区三区.www| 黄色网址视频在线观看| 国产综合第一页| 福利一区二区在线| 成人精品电影在线| 精品国产一级| 久久精品小视频| 狠狠色2019综合网| 少妇一区视频| 成人在线看视频| 九九综合九九综合| 欧美精品aa| 91成人在线视频观看| 亚洲精品国产精品自产a区红杏吧| 日韩一区二区三区精品视频第3页 日韩一区二区三区精品 | 色妞www精品视频| 波多野结衣一区二区| 乱一区二区av| 毛片免费看不卡网站| 国产美女精品免费电影| 狠狠操狠狠色综合网| 在线亚洲精品| 国产精品极品美女在线观看| 免费日韩中文字幕| 国产精品久久久久77777| 日本美女一区二区三区视频| 亚洲高清在线免费观看| 2020久久国产精品| 欧美日韩精品在线| 日本美女一区二区三区| av一级久久| 蜜桃91精品入口| 久久久久久久久网| 日韩视频在线你懂得| 成人国产视频在线观看| av一区在线观看| 亚洲午夜精品一区二区三区| 日韩在线观看免费高清完整版 |