Rails不是入門的好東西(gateway drug)
這是Dzone這幾天推薦排行榜的文章,有可能是作者的一面之詞,但可能也反映了某些問題,來自Rails is not a gateway drug - Yo Briefcase!。
作者開頭說:他知道對Rails下一個死定義會面臨如何恐怖的地步,但是他還是想武斷地說:Ruby是一個頑固的重量級Web框架,不是人們宣稱那種大麻之類誘導性毒品(讓你感覺良好但不傷害你),很多人當試驗一下Rails以後,就會立即愛上Ruby和Rails,並且寫很長部落格來談自己如何把.NET或Java拋在腦後了,但是作者並不這麼認為,只有感覺是Rails讓自己落後了,已經使用它一個月,一直在憤怒中度過,充滿挫折,作者解釋了其中原因:
作者之前是.NET程式設計師,試驗了Ruby,並且開始進行.NET到Ruby移植,作者當時長舒了口氣,去他媽的.NET,比Java還差,我討厭你和你的味道。作者走上了Rails之旅程。
但是等到了作者寫這篇文章的時候,他感覺無比沮喪:
1.在命令列介面方面,CLI有太多特性,如果不深入研究幾乎無法使用,當他看到一些Railscasts.com文章後他總是問自己,這個傢伙是怎麼做到的?可選擇當然是好,但是Rails本來定位給初學者容易上手(約定大於配置),現在發現預設的選項並不是我的最佳選擇。
2.有太多魔術Magic,Rails是非常依賴約定的,但是有太多約定,以致於作者有幾次百思不得其解,一些約定有很好文件,但是其他沒有,這樣就感覺Rails有很多讓人搞不懂的魔術。
它等同於ASP.NET的MVC:
.NET程式碼中return view()(Rails沒有)可以告訴我返回一個View試圖,這樣我能夠知道訪問home/index.cshtml,當我們增加更多類似方法時,一點點這樣的程式碼可以告訴我們區別,約定如果不清楚標註就不具有擴充套件性。
3.消腫,在一個Rails應用中,你會使用很多類似腳手架的複製工具,你將會看到很多檔案:
...
其他見篇首作者文章和討論。
作者開頭說:他知道對Rails下一個死定義會面臨如何恐怖的地步,但是他還是想武斷地說:Ruby是一個頑固的重量級Web框架,不是人們宣稱那種大麻之類誘導性毒品(讓你感覺良好但不傷害你),很多人當試驗一下Rails以後,就會立即愛上Ruby和Rails,並且寫很長部落格來談自己如何把.NET或Java拋在腦後了,但是作者並不這麼認為,只有感覺是Rails讓自己落後了,已經使用它一個月,一直在憤怒中度過,充滿挫折,作者解釋了其中原因:
作者之前是.NET程式設計師,試驗了Ruby,並且開始進行.NET到Ruby移植,作者當時長舒了口氣,去他媽的.NET,比Java還差,我討厭你和你的味道。作者走上了Rails之旅程。
但是等到了作者寫這篇文章的時候,他感覺無比沮喪:
1.在命令列介面方面,CLI有太多特性,如果不深入研究幾乎無法使用,當他看到一些Railscasts.com文章後他總是問自己,這個傢伙是怎麼做到的?可選擇當然是好,但是Rails本來定位給初學者容易上手(約定大於配置),現在發現預設的選項並不是我的最佳選擇。
2.有太多魔術Magic,Rails是非常依賴約定的,但是有太多約定,以致於作者有幾次百思不得其解,一些約定有很好文件,但是其他沒有,這樣就感覺Rails有很多讓人搞不懂的魔術。
class HomeController < ApplicationController def index end end <p class="indent"> |
它等同於ASP.NET的MVC:
public class HomeController: Controller { public ActionResult Index() { return View(); } } <p class="indent"> |
.NET程式碼中return view()(Rails沒有)可以告訴我返回一個View試圖,這樣我能夠知道訪問home/index.cshtml,當我們增加更多類似方法時,一點點這樣的程式碼可以告訴我們區別,約定如果不清楚標註就不具有擴充套件性。
3.消腫,在一個Rails應用中,你會使用很多類似腳手架的複製工具,你將會看到很多檔案:
rails generate scaffold MyEntity name:String age:Int !6580 invoke active_record create db/migrate/20120403130542_create_my_entities.rb create app/models/my_entity.rb invoke test_unit create test/unit/my_entity_test.rb create test/fixtures/my_entities.yml route resources :my_entities invoke scaffold_controller create app/controllers/my_entities_controller.rb invoke slim create app/views/my_entities create app/views/my_entities/index.html.slim create app/views/my_entities/edit.html.slim create app/views/my_entities/show.html.slim create app/views/my_entities/new.html.slim create app/views/my_entities/_form.html.slim invoke test_unit create test/functional/my_entities_controller_test.rb invoke helper create app/helpers/my_entities_helper.rb invoke test_unit create test/unit/helpers/my_entities_helper_test.rb invoke assets invoke coffee create app/assets/javascripts/my_entities.js.coffee invoke scss create app/assets/stylesheets/my_entities.css.scss invoke scss create app/assets/stylesheets/scaffolds.css.scss <p class="indent"> |
...
其他見篇首作者文章和討論。
[該貼被banq於2012-04-05 10:10修改過]
[該貼被banq於2012-04-05 10:13修改過]
相關文章
- 網路真不是個好東西
- html入門的一些東西HTML
- 為什麼說區塊鏈也不是什麼好東西?區塊鏈
- Linux 命令列下的好東西Linux命令列
- 運動追蹤市場正被入門產品衝擊 東西又好又便宜
- 真是好東西!一組動感的頁面載入動畫效果動畫
- js中的arguments是一個好東西JS
- 這不是就是軟體工程師最愛的東西軟體工程工程師
- rlwrap 是一個好東西 for linuxLinux
- 開發者工具又加了什麼好東西?(Chrome 68)Chrome
- 怪東西
- Spring Cloud Gateway 入門SpringCloudGateway
- Javascript是個好東西(廣大人民的智慧是無窮的):JavaScript
- 不要偷黑客的東西黑客
- Spring Cloud Gateway 入門案例SpringCloudGateway
- 開箱即用,你不可錯過的好東西「GitHub 熱點速覽」Github
- LinkD,解決系統盤空間分配不足的好東西
- Rails並不是用Ruby編寫的AI
- 【Android】 註解是個好東西, 這個可以有Android
- 爬取githubs——登入後的東西(兩種方法)Github
- 未來學東西的思路
- 筆試不會的東西筆試
- 蘋果真正賣的東西蘋果
- Spring Cloud Gateway (一)入門篇SpringCloudGateway
- Spring Cloud Gateway---GlobalFilter(入門)SpringCloudGatewayFilter
- POJ-1363 Rails-堆疊入門AI
- VBS 的基礎性的東西
- React 發明的 server component 居然和 server-side render不是一個東西ReactServerIDE
- 防騙大資料,朋友圈裡賣的這些東西...不是坑人就是害命!大資料
- 怎樣寫好業務程式碼——那些年領域建模教會我的東西
- HTML5.1 裡的新東西HTML
- iOS要用但不想記的東西iOS
- 初始學習PHP注意的東西PHP
- 近期做的一些東西
- 計組那些容易搞混的東西
- spring Cloud Gateway 入門簡單使用SpringCloudGateway
- PHPSTORM 相關東西PHPORM
- 東拼西湊學javaJava