การจัดระเบียบโค้ดเข้าไปในฟังก์ชัน

Clojure:
การจัดระเบียบโค้ดเข้าไปในฟังก์ชัน

วิธีการ:

ฟังก์ชันใน Clojure ถูกกำหนดด้วย defn, ตามด้วยชื่อ, พารามิเตอร์ และเนื้อหา นี่คือตัวอย่างอย่างรวดเร็ว

(defn greet [name]
  (str "Hello, " name "!"))

(greet "Alex") ; => "Hello, Alex!"

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

(defn area [length width]
  (* length width))

(defn print-area [length width]
  (println "The area is:" (area length width)))

(print-area 3 4) ; => The area is: 12

ลงลึก

ในอดีต นักพัฒนาจะเพียงแค่ยัดโลจิกทั้งหมดเข้าไปในบล็อกเดียว มันน่าเกลียด แล้วโปรแกรมมิ่งแบบมีโครงสร้างก็เข้ามา และฟังก์ชันกลายเป็นสิ่งหนึ่ง ใน Clojure, ทุกฟังก์ชันเป็น first-class—คุณสามารถโยนพวกมันไปรอบๆ เหมือนกับค่าอื่นๆ

ทางเลือก? บางคนอาจจะยุ่งเกี่ยวกับ multi-methods หรือฟังก์ชันของระดับสูง แต่พวกนั้นเป็นเพียงเครื่องเทศในหม้อซุปฟังก์ชัน

ทุกสิ่งอยู่ในรายละเอียดของฟังก์ชัน: พวกเขาเป็น immutable ใน Clojure, ทำให้เกิดผลกระทบข้างเคียงน้อยลง พวกเขาพึ่งพาการเรียกซ้ำมากกว่าลูปทั่วไป ซึ่งเข้ากันได้ดีกับพาราไดม์การเขียนโปรแกรมแบบฟังก์ชันของภาษา

ดูเพิ่มเติม