นักพัฒนาตั้งคำถามถึงคุณค่าของ Pledge เมื่อเทียบกับเฟรมเวิร์คแบบ Reactive ที่มีอยู่แล้วใน Swift

BigGo Editorial Team
นักพัฒนาตั้งคำถามถึงคุณค่าของ Pledge เมื่อเทียบกับเฟรมเวิร์คแบบ Reactive ที่มีอยู่แล้วใน Swift

นักพัฒนา Swift กำลังถกเถียงเกี่ยวกับข้อดีของ Pledge ซึ่งเป็นเฟรมเวิร์คการเขียนโปรแกรมแบบ reactive ตัวใหม่ โดยหลายคนตั้งคำถามถึงข้อได้เปรียบเมื่อเทียบกับโซลูชันที่มีอยู่แล้วอย่าง Combine ของ Apple และการจัดการสถานะที่มีอยู่แล้วใน SwiftUI เฟรมเวิร์คนี้ซึ่งมีเป้าหมายเพื่อทำให้การจัดการสถานะและการส่งต่อเหตุการณ์ในแอปพลิเคชัน Swift ง่ายขึ้น ได้จุดประกายให้เกิดการอภิปรายเกี่ยวกับภูมิทัศน์ที่กำลังเปลี่ยนแปลงของการเขียนโปรแกรมแบบ reactive ในระบบนิเวศของ Apple

การตอบรับจากชุมชนแสดงปฏิกิริยาที่หลากหลาย

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

ดูเหมือนจะเป็นส่วนหลักของ RxSwift/Combine โดยไม่มีส่วนที่มีประโยชน์ใดๆ เลย ตัวอย่างเช่น ตัวอย่างการเชื่อมต่อเครือข่ายต้องใช้คุณสมบัติที่ชัดเจน ในขณะที่โค้ดที่ผมจะใช้สำหรับสิ่งนี้คือการส่งคืน Observable โดยตรง

ความคิดเห็นนี้สะท้อนถึงความกังวลในวงกว้างว่า Pledge อาจกำลังประดิษฐ์สิ่งที่มีอยู่แล้วใหม่โดยไม่ได้เพิ่มประโยชน์ที่สำคัญเหนือเฟรมเวิร์คที่มีอยู่แล้ว นักพัฒนาบางคนชี้ให้เห็นว่า Apple เองก็ดูเหมือนจะกำลังเคลื่อนออกจากรูปแบบการเขียนโปรแกรมเชิงฟังก์ชันแบบ reactive (FRP) แบบดั้งเดิมด้วยเฟรมเวิร์ค Observable ที่ใช้ macro ซึ่งบ่งชี้ว่าแนวทางที่ง่ายกว่าอาจกำลังได้รับความนิยมมากขึ้น

ความเข้ากันได้กับแพลตฟอร์มอาจเป็นจุดแตกต่าง

ข้อได้เปรียบที่อาจเกิดขึ้นประการหนึ่งที่ถูกเน้นในการอภิปรายคือความเข้ากันได้ของ Pledge กับสภาพแวดล้อมที่ไม่มี Combine ของ Apple ผู้แสดงความคิดเห็นคนหนึ่งสังเกตว่า Pledge อาจมีคุณค่าสำหรับ Swift บน Linux ซึ่ง Combine ไม่ได้รับการสนับสนุนอย่างเป็นทางการ อย่างไรก็ตาม คนอื่นๆ ได้ชี้ให้เห็นถึงทางเลือกที่มีอยู่แล้วเช่น OpenCombine และ CombineX ที่แก้ไขช่องว่างนี้ไปแล้ว

ผู้สร้างเฟรมเวิร์คได้อธิบายว่า Pledge มุ่งเป้าไปที่การพัฒนา UIKit เป็นหลัก ซึ่งการจัดการสถานะแบบ reactive ไม่ได้มีอยู่ในตัว ไม่เหมือนกับแนวทางแบบบูรณาการของ SwiftUI ตำแหน่งนี้บ่งชี้ว่า Pledge มีเป้าหมายเพื่อให้บริการนักพัฒนาที่ทำงานกับเฟรมเวิร์ค UI แบบเก่าหรือผู้ที่ไม่สามารถเปลี่ยนไปใช้ SwiftUI ด้วยเหตุผลต่างๆ

คุณสมบัติหลักของ Pledge

  • การใช้งานแบบ thread-safe
  • การแจ้งเตือนตามลำดับความสำคัญ
  • คิวการส่งข้อมูลที่สามารถปรับแต่งได้
  • การอัปเดตแบบกลุ่ม
  • การจำกัดอัตรา (การควบคุมความถี่และการหน่วงเวลา)
  • ตัวดำเนินการเชิงฟังก์ชัน (map, filter, ฯลฯ)
  • การจัดการสถานะแบบรวมศูนย์

เฟรมเวิร์กเชิงปฏิกิริยาทางเลือกที่กล่าวถึง

  • Combine ของ Apple
  • RxSwift
  • OpenCombine
  • CombineX
  • Property wrapper @Published ของ SwiftUI
  • เฟรมเวิร์ก Observable ใหม่ของ Apple ที่ใช้ macro

ความกังวลเกี่ยวกับความซับซ้อนในการเขียนโปรแกรมแบบ Reactive

ความคิดเห็นหลายข้อเกี่ยวข้องกับความกังวลที่กว้างขึ้นเกี่ยวกับแนวทางการเขียนโปรแกรมแบบ reactive ใน Swift นักพัฒนาคนหนึ่งกล่าวถึงการมี PTSD จากโค้ดเบสที่ซับซ้อนเกินไปซึ่งสร้างขึ้นด้วยการเขียนโปรแกรมเชิงฟังก์ชันแบบ reactive โดยเฉพาะอ้างอิงถึงแนวทาง MVVM ของ Kickstarter สิ่งนี้เน้นย้ำถึงความตึงเครียดที่เกิดขึ้นในชุมชน Swift ระหว่างรูปแบบ reactive ที่ทรงพลังแต่อาจซับซ้อนและแนวทางที่ง่ายกว่าและตรงไปตรงมามากกว่า

การอภิปรายสะท้อนถึงระบบนิเวศที่กำลังเติบโตขึ้น ซึ่งนักพัฒนากำลังมีความละเอียดรอบคอบมากขึ้นเกี่ยวกับการเพิ่มการพึ่งพาใหม่ๆ โดยเฉพาะเมื่อมีความซ้ำซ้อนอย่างมีนัยสำคัญกับโซลูชันที่มีอยู่แล้ว เมื่อ Swift ยังคงพัฒนาต่อไป โดยที่ Apple แนะนำรูปแบบใหม่ๆ เช่น เฟรมเวิร์ค Observable ที่ใช้ macro ชุมชนดูเหมือนจะกำลังมองหาความสมดุลระหว่างความเป็น reactive และความเรียบง่าย

ที่น่าสนใจคือ มีความสับสนในการอภิปราย โดยผู้แสดงความคิดเห็นคนหนึ่งเข้าใจผิดว่า Pledge เป็นเฟรมเวิร์คสำหรับการยืนยันตัวตนแทนที่จะเป็นโซลูชันการเขียนโปรแกรมแบบ reactive ซึ่งเน้นย้ำถึงความท้าทายในการสื่อสารวัตถุประสงค์ของเฟรมเวิร์คใหม่อย่างชัดเจนในระบบนิเวศที่แออัด

อ้างอิง: Pledge