RxSwift และ coroutines ใน Kotlin - วิชาเลือกในการพัฒนามือถือจาก AGIMA และ GeekBrains

RxSwift และ coroutines ใน Kotlin - วิชาเลือกในการพัฒนามือถือจาก AGIMA และ GeekBrains

ความรู้เป็นสิ่งที่ดีมาก แต่จำเป็นต้องมีการฝึกฝนเพื่อให้คุณสามารถใช้ข้อมูลที่ได้รับ โดยถ่ายโอนจากสถานะ "ที่เก็บข้อมูลแบบพาสซีฟ" ไปเป็นสถานะ "ใช้งานอยู่" ไม่ว่าการฝึกภาคทฤษฎีจะดีแค่ไหน งาน “ภาคสนาม” ก็ยังเป็นสิ่งจำเป็น ข้อมูลข้างต้นใช้ได้กับเกือบทุกสาขาวิชา รวมถึงการพัฒนาซอฟต์แวร์ด้วย

ในปีนี้ GeekBrains ซึ่งเป็นส่วนหนึ่งของคณะพัฒนาอุปกรณ์เคลื่อนที่ของมหาวิทยาลัยออนไลน์ GeekUniversity ได้เริ่มทำงานกับเอเจนซี่เชิงโต้ตอบ AGIMA ซึ่งมีทีมเป็นนักพัฒนามืออาชีพ (พวกเขาสร้างโปรเจ็กต์ที่มีโหลดสูงที่ซับซ้อน พอร์ทัลองค์กร และแอปพลิเคชันมือถือ แค่นั้นเอง) AGIMA และ GeekBrains ได้สร้างวิชาเลือกเพื่อเจาะลึกประเด็นในทางปฏิบัติของการพัฒนาแอปพลิเคชันบนมือถือ

วันก่อนเราได้พูดคุยกับ Igor Vedeneev ผู้เชี่ยวชาญ iOS และ Alexander Tizik ผู้เชี่ยวชาญด้าน Android ต้องขอบคุณพวกเขา วิชาเลือกเกี่ยวกับการพัฒนามือถือจึงเต็มไปด้วยการปฏิบัติจริง หลักสูตรพิเศษเกี่ยวกับกรอบงาน RxSwift и โครูทีนใน Kotlin. ในบทความนี้ นักพัฒนาพูดถึงความสำคัญของแต่ละด้านสำหรับโปรแกรมเมอร์

การเขียนโปรแกรมเชิงโต้ตอบใน iOS โดยใช้ RxSwift เป็นตัวอย่าง

RxSwift และ coroutines ใน Kotlin - วิชาเลือกในการพัฒนามือถือจาก AGIMA และ GeekBrains
ครูวิชาเลือก Igor Vedeneev: “ด้วย RxSwift ใบสมัครของคุณก็จะบินได้”

นักเรียนจะได้รับข้อมูลอะไรบ้างระหว่างวิชาเลือก?

เราไม่เพียงแต่พูดถึงความสามารถของเฟรมเวิร์กเท่านั้น แต่ยังแสดงวิธีใช้งานในชุดค่าผสม MVVM + RxSwift แบบคลาสสิกอีกด้วย มีการกล่าวถึงตัวอย่างเชิงปฏิบัติหลายประการด้วย เพื่อรวบรวมข้อมูลที่ได้รับ เราจะเขียนแอปพลิเคชันที่ใกล้เคียงกับสภาพการปฏิบัติงานภาคสนามมากที่สุด นี่จะเป็นแอปพลิเคชั่นค้นหาเพลงที่ใช้ iTunes ค้นหา API. ที่นั่นเราจะใช้แนวทางปฏิบัติที่ดีที่สุดทั้งหมด รวมถึงพิจารณาตัวเลือกที่ง่ายกว่าสำหรับการใช้ RxSwift ในกระบวนทัศน์ MVC

RxSwift - เหตุใดโปรแกรมเมอร์ iOS จึงต้องการเฟรมเวิร์กนี้ มันทำให้ชีวิตของนักพัฒนาง่ายขึ้นได้อย่างไร

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

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

เหตุใดจึงเลือกกรอบงานเฉพาะนี้มากกว่ากรอบอื่น ๆ

RxSwift มีชุมชนที่ใหญ่ที่สุด นั่นคือมีโอกาสมากขึ้นที่ปัญหาที่นักพัฒนากำลังเผชิญจะได้รับการแก้ไขโดยใครบางคนแล้ว นอกจากนี้ยังมีการผูกจำนวนมากออกจากกล่อง นอกจากนี้ RxSwift ยังเป็นส่วนหนึ่งของ ReactiveX ซึ่งหมายความว่ามีอะนาล็อกสำหรับ Android เช่น (RxJava, RxKotlin) และเพื่อนร่วมงานในเวิร์กช็อปสามารถพูดภาษาเดียวกันระหว่างกัน แม้ว่าบางคนจะทำงานกับ iOS และคนอื่น ๆ ที่ใช้ Android ก็ตาม

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

RxSwift ควรใช้ที่ไหน?

  1. การผูก ตามกฎแล้วเรากำลังพูดถึง UI ความสามารถในการเปลี่ยน UI ราวกับว่าตอบสนองต่อการเปลี่ยนแปลงข้อมูลและไม่บอกอินเทอร์เฟซอย่างชัดเจนว่าถึงเวลาอัปเดตแล้ว
  2. ความสัมพันธ์ระหว่างส่วนประกอบและการปฏิบัติการ แค่ตัวอย่างเท่านั้น เราจำเป็นต้องได้รับรายการข้อมูลจากเครือข่าย อันที่จริงนี่ไม่ใช่การดำเนินการง่ายๆ ในการดำเนินการนี้ คุณจะต้องส่งคำขอ แมปการตอบสนองลงในอาร์เรย์ของออบเจ็กต์ บันทึกลงในฐานข้อมูล และส่งไปยัง UI ตามกฎแล้ว องค์ประกอบต่างๆ มีหน้าที่รับผิดชอบในการดำเนินการเหล่านี้ (เรารักและปฏิบัติตามหลักการ มูลฝอย?) การมีเครื่องมืออย่าง RxSwift อยู่ในมือ ทำให้สามารถอธิบายว่าระบบจะทำอะไร และจะดำเนินการอย่างไรในที่อื่นๆ ด้วยเหตุนี้จึงสามารถจัดระเบียบโค้ดได้ดีขึ้นและความสามารถในการอ่านเพิ่มขึ้น โค้ดสามารถแบ่งออกเป็นสารบัญและตัวหนังสือได้

Coroutines ใน Kotlin

RxSwift และ coroutines ใน Kotlin - วิชาเลือกในการพัฒนามือถือจาก AGIMA และ GeekBrains
ครูวิชาเลือก Alexander Tizik: “การพัฒนาสมัยใหม่ต้องใช้วิธีการทางเทคนิคที่ทันสมัย”

จะมีการสอนอะไรบ้างที่คณาจารย์ GeekBrains ซึ่งเป็นส่วนหนึ่งของไตรมาสที่มีแบรนด์?

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

เราจะเรียนรู้การเขียนโค้ดสำนวนใน Coroutines ที่ช่วยแก้ปัญหาในทางปฏิบัติและสามารถเข้าใจได้ตั้งแต่แรกเห็น แม้ว่าจะไม่มีความรู้เชิงลึกเกี่ยวกับวิธีการทำงานของ Coroutines (ซึ่งไม่สามารถพูดได้เกี่ยวกับไลบรารีเช่น RxJava) นอกจากนี้เรายังจะเข้าใจวิธีใช้แนวคิดที่ซับซ้อนมากขึ้น เช่น โมเดลนักแสดง เพื่อแก้ไขปัญหาที่ซับซ้อนมากขึ้น เช่น คลังข้อมูลในแนวคิด MVI

อย่างไรก็ตามข่าวดีเพิ่มเติม ในขณะที่บันทึกวิชาเลือก การอัปเดตห้องสมุด Kotlin Coroutines ก็ได้เปิดตัว ซึ่งชั้นเรียนปรากฏขึ้น Flow - ประเภทอะนาล็อก Flowable и Observable จาก RxJava การอัปเดตทำให้ฟีเจอร์ Coroutines สมบูรณ์จากมุมมองของนักพัฒนาแอปพลิเคชัน จริงอยู่ที่ว่ายังมีพื้นที่สำหรับการปรับปรุง: แม้ว่าจะมีการรองรับ coroutines ใน kotlin/native แต่ก็สามารถเขียนแอปพลิเคชันหลายแพลตฟอร์มใน Kotlin ได้แล้ว และไม่ต้องทนทุกข์ทรมานจากการขาด RxJava หรือแอนะล็อกใน Kotlin ล้วนๆ การสนับสนุน coroutines ใน kotlin/native ยังไม่เสร็จสมบูรณ์ เช่น ไม่มีแนวคิดเรื่องนักแสดง โดยทั่วไปแล้ว ทีม Kotlin มีแผนที่จะสนับสนุนนักแสดงที่ซับซ้อนมากขึ้นในทุกแพลตฟอร์ม

Kotlin Coroutines - พวกเขาช่วยนักพัฒนา Kotlin ได้อย่างไร

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

Coroutines แตกต่างจากเธรดอย่างไร

ทีม Kotlin เรียกเธรดที่มีน้ำหนักเบาของ coroutines นอกจากนี้ โครูทีนยังสามารถส่งกลับค่าบางอย่างได้ เนื่องจากที่แกนกลางของคอร์รูทีนนั้นเป็นการคำนวณที่ถูกระงับ มันไม่ได้ขึ้นอยู่กับเธรดของระบบโดยตรง เธรดจะเรียกใช้งาน Coroutines เท่านั้น

ปัญหาในทางปฏิบัติใดบ้างที่สามารถแก้ไขได้โดยใช้ Coroutine ซึ่งไม่สามารถแก้ไขได้หรือยากที่จะแก้ไขโดยใช้ Kotlin ที่ "บริสุทธิ์"

งานแบบอะซิงโครนัส แบบขนาน หรือแบบ "แข่งขัน" ใดๆ จะได้รับการแก้ไขอย่างดีโดยใช้ Coroutines ไม่ว่าจะเป็นการประมวลผลการคลิกของผู้ใช้ การออนไลน์ หรือการสมัครรับการอัปเดตจากฐานข้อมูล

ใน Kotlin ล้วนๆ ปัญหาเหล่านี้ได้รับการแก้ไขในลักษณะเดียวกับใน Java ด้วยความช่วยเหลือของเฟรมเวิร์กหลายพันรายการ ซึ่งแต่ละเฟรมมีข้อดีและข้อเสียของตัวเอง แต่ไม่มีตัวใดที่รองรับระดับภาษา

โดยสรุป เป็นเรื่องที่คุ้มที่จะบอกว่าทั้งวิชาเลือก (และวิชาหลักด้วย) ได้รับการปรับปรุงให้สอดคล้องกับการเปลี่ยนแปลงของเงื่อนไขภายนอก หากการอัปเดตที่สำคัญปรากฏในภาษาหรือกรอบงาน ครูจะคำนึงถึงเรื่องนี้และปรับเปลี่ยนโปรแกรม ทั้งหมดนี้ช่วยให้คุณจับตาดูกระบวนการพัฒนาได้

ที่มา: will.com

เพิ่มความคิดเห็น