Displaying articles with tag dry

Ruby on Rails :: Introduction

Posted by PunNeng, Fri May 12 18:54:00 UTC 2006

Ruby on Rails เป็น framework ที่ทำให้ชีวิตโปรแกรมเมอร์นี้ง่ายต่อการพัฒนา การเอาไปใช้งาน และการดูแลรักษา web application แต่ทุกๆ web framework ก็ใช้เหมือนๆ กันนี่ แล้วสิ่งที่ทำให้ Rails ต่างออกไปล่ะ?? มาดูกัน

อันแรกเลย ต้องมองไปที่สถาปัตยกรรมของมันก่อน ด้วยโครงสร้างแบบ Model-View-Controller(MVC) เจ้าตัว MVC นี้ มันจะช่วยให้การวางโครงสร้างของ web application ให้มันดูเป็นสัดส่วนที่ดี(เดี๋ยวจะไปว่ากันเกี่ยวกับ MVC กันอีกที) Java framework เช่น Tapestry และ Struts ก็เป็นแบบ MVC ตัว Rails นี้ ก็เป็น MVC เหมือนกัน เวลาพัฒนางานสักอย่างบน Rails นี้ code ต่างๆ จะถูกเก็บเป็นส่วนๆ ตามหน้าที่ของมันคือฝั่ง model, view และ controller

สิ่งถัดมาคือ ต้องมองไปที่ตัวภาษาที่ใช้เขียน Rails มันถูกเขียนโดย Ruby ซึ่งเป็นภาษาสมัยใหม่ เป็นภาษา script เชิงวัตถุ(object-oriented) ซึ่งมันค่อนข้างจะรวบรัด สั้น สามารถเขียนให้มันเป็นธรรมชาติยังไงก็ได้ใน Ruby นี่แหละ(งงอะดิ ถ้าเขียนดีๆ มันจะเหมือนการเขียนอะไรบางอย่างซึ่งดูเหมือนบทความเป็นย่อหน้าๆ ไม่เหมือนการเขียน code เลยสักนิด มันแปลกดีนะ) และไอ้ธรรมชาตินี้แหละ มันนำไปสู่สิ่งที่ง่ายต่อการเขียน และการอ่าน code ถ้าหากต้องกลับมาเจอมันอีกที

Ruby ได้ยืมสไตล์ของภาษาอย่าง Lisp มาใช้ ทำให้มันง่ายในการทำ metaprogramming มันทำให้โปรแกรมของเราสั้นกว่า และอ่านได้ง่ายกว่า และมันยังอนุญาตให้ทำงานโดยผ่าน configuration files แทนที่มันจะต้องอยู่ใน code อย่างเดียว มันทำให้เรารู้ว่าเกิดอะไรขึ้นบ้าง ตอนที่มันตั้งค่าพื้นฐาน

Code ข้างล่างนี้ได้ประกาศ model class สำหรับชิ้นงานอันนึง ถ้าไม่เข้าใจ เอาไว้ก่อน แค่จะให้ดููว่ามันทำอะไรบ้าง ภายใต้ code ไม่กี่บรรทัดนี้

  1
  2
  3
  4
  5
  6
  7
  8
  9
class Project < ActiveRecord::Base
  belongs_to :portfolio
  has_one :project_manager
  has_many :milestones
  has_and_belongs_to_many :categories
  validates_presence_of :name, :description
  validates_acceptance_of :non_disclosure_agreement
  validates_uniqueness_of :key
end

ลองตัดสัญลักษณ์ต่างๆ ออก แล้วมองให้เป็นย่อหน้าอันนึง มันเหมือนเราเขียนอะไรบางอย่างเท่านั้นเอง ง่ายดายสุดๆ

หรือว่า จะลองมามองที่หลักของมันดู การออกแบบของ Rails ได้ถูกขับเคลื่อนจาก 2 หัวใจสำคัญ คือ DRY และ convention over configuration มาดูอันแรกก่อน DRY ย่อมาจาก Don't Repeat Yourself แปลตรงตัวเลยคือ อย่าทำซ้ำตัวเอง ทุกสิ่งที่จะได้จากระบบ มันควรจะทำเพียงครั้งเดียว เช่น header footer ต่างๆ ที่เราจะสร้างมันเพียงครั้งเดียวพอ(ถ้ามันเหมือนๆ กัน) Rails ได้ใช้ Ruby ที่จะนำไอ่สิ่งๆ นี้เข้ามา คุณจะเจอการทำสำเนาเล็กๆ ของการเรียกใช้ header หรือ footer หรือส่วนเล็กๆ น้อยๆ ต่างๆ ใน Rails application นี้แหละ หรือในส่วนของ database จะมีการใช้งาน ActiveRecord ทำให้มีการประกาศเพียงครั้งเดียว แล้วเรียกใช้ได้ตลอด ถ้างง อ่านไปเรื่อยๆ เดี๋ยวจะให้ดูตัวอย่างของพวกนี้ แล้วจะเข้าใจมากขึ้น

Convention over configuration แปลตรงตัวเลยคือ แบบแผน(ของ Rails)อยู่เหนือ configuration หมายความว่า มันจะมีความเฉลียวฉลาดและความอัตโนมัติสำหรับสิ่งที่เราจะเอามันมาผูกเข้าด้วยกันโดยไม่ต้องทำการ configure เราจะทำการ configure สิ่งที่ไม่เป็นไปตามแบบแผนหรือสิ่งที่มันไม่ควรจะทำเท่านั้น อย่างเช่น Struts จะใช้งานที ต้องไป configure ที่ XML มากมายเกินเหตุ แต่ Rails ไม่ต้อง เราจะไม่ใช้การ configure ที่ฟุ่มเฟีอยเกินไป นั่นหมายความว่า code ของ Rails จะน้อยกว่าเห็นๆ

และ Rails ก็ยังมีสิ่งที่พิเศษๆ อีก อย่าง Web Services หรือระบบจัดการกับ e-mail หรือว่า AJAX( on Rails) ยังรวมถึง unit test อีกด้วย โดยการ testing นี้ จะมีการแยกส่วนของ DB สำหรับ test เป็นส่วนๆ ไป

และยังมี code generator ที่มากับตัว Rails เอง สำหรับคนที่ขี้เกียจพิมพ์ ก็จะสบายขึ้น และก็ยังมี IDE ที่ฉลาดๆ อย่าง eclipse มาให้ใช้อีกด้วย โดยการนำ plugin มาติดตั้ง

Rails นั้น มีความแตกต่างไปอีก มันถูกแตกตัวออกมาจากโลกของการค้า และผันมาเป็น framework ถ้าหากว่าเราเริ่มต้นด้วยการใช้ Rails ในการพัฒนา web application เราก็เหมือนสร้าง application ดีๆ ไปแล้ว 50%

เดี๋ยวมาต่อกันคราวหน้าครับ

แก้ไขล่าสุด วันที่ 4 กรกฏาคม 2550 เวลา 4.31 น.

0 comments | Filed Under: | Tags: dry

codegent: we're hiring