Elm:
การปรับโครงสร้างโค้ด

วิธีการ:

พิจารณาว่าคุณมีฟังก์ชัน Elm ที่ทำงานมากเกินไป เช่น ผสมผสานโลจิก UI กับการอัปเดตสถานะ เป็นตัวอย่างที่สมบูรณ์สำหรับการ Refactor ตัวอย่างเดิม:

updateAndFormat : String -> Model -> (Model, Cmd Msg)
updateAndFormat input model =
    let
        updatedModel = { model | userInput = input }
    in
    if String.length input > 5 then
        ( updatedModel, Cmd.none )
    else
        ( model, Cmd.none )

หลังจาก Refactor เราแยกเรื่องราวโดยนำโลจิกออกมาเป็นฟังก์ชันแยกต่างหาก:

-- โลจิกการอัปเดตคืออิสระ
updateUserInput : String -> Model -> Model
updateUserInput input model = 
    { model | userInput = input }

-- โลจิกการจัดรูปแบบ (view) ก็แยกต่างหาก
formatUserInput : Model -> (Model, Cmd Msg)
formatUserInput model =
    if String.length model.userInput > 5 then
        ( model, Cmd.none )
    else
        ( { model | userInput = "" }, Cmd.none ) -- ล้างข้อมูลป้อนหากสั้นเกินไป เป็นตัวอย่างกฎ

-- ฟังก์ชั่นการอัปเดตตอนนี้ใช้ฟังก์ชั่นช่วยเหลือ
updateAndFormat : String -> Model -> (Model, Cmd Msg)
updateAndFormat input model =
    model
    |> updateUserInput input
    |> formatUserInput

ด้วยการเปลี่ยนแปลงเหล่านี้ คุณมีการแยกความกังวลอย่างชัดเจน และแต่ละฟังก์ชั่นสามารถเข้าใจและทดสอบได้ง่ายขึ้น

การศึกษาลึก

การ Refactor ตามรูปแบบเป็นการปฏิบัติที่สามารถติดตามไปยังยุคแรกๆ ของการเขียนโปรแกรมเมื่อต้นทุนของการเปลี่ยนแปลงโค้ดกำลังถูกจำเป็นเป็นส่วนหนึ่งของกระบวนการพัฒนา โดยเฉพาะหนังสือ “Refactoring: Improving the Design of Existing Code” ของ Martin Fowler ที่เผยแพร่ในช่วงปลาย 1990s จริงๆ แล้วได้ตั้งเวทีสำหรับการ Refactor ด้วยวิธีการที่มีโครงสร้างและแคตตาล็อกของ “code smells” เพื่อระบุโอกาสในการ Refactor

ในบริบทของ Elm, Refactor นั้นเชื่อมโยงกับจุดแข็งของภาษา เช่น ระบบการพิมพ์ที่แข็งแกร่ง ซึ่งส่งเสริมความมั่นใจในระหว่างกระบวนการ ทางเลือกสำหรับการ Refactor ด้วยตนเองอาจรวมถึงเครื่องมือการเปลี่ยนรูปแบบโค้ดแบบอัตโนมัติ แต่เครื่องมือด้านนี้ของ Elm ยังคงอยู่ในระหว่างการพัฒนาเมื่อเปรียบเทียบกับภาษาเก่า รายละเอียดการดำเนินการมักจะเกี่ยวข้องกับการ Refactor ทั่วไป เช่น การสกัดฟังก์ชั่น การเปลี่ยนชื่อ และการทำให้เงื่อนไขเรียบง่ายขึ้น ตัวคอมไพเลอร์ของ Elm เป็นพันธมิตรหลักในการ Refactor เนื่องจากมันจะไม่ยอมให้คุณผิดพลาดมาก—มันเตือนเสมอเมื่อมีสิ่งใดไม่ถูกต้อง รับประกันว่าโค้ดที่คุณ Refactor ยังคงทำงาน

ดูเพิ่มเติม