RxSwift và coroutines trong Kotlin - một môn tự chọn trong phát triển thiết bị di động từ AGIMA và GeekBrains

RxSwift và coroutines trong Kotlin - một môn tự chọn trong phát triển thiết bị di động từ AGIMA và GeekBrains

Kiến thức là tốt, thật tuyệt vời. Nhưng cũng cần thực hành để bạn có thể sử dụng dữ liệu nhận được, chuyển chúng từ trạng thái “lưu trữ thụ động” sang trạng thái “sử dụng tích cực”. Dù có được đào tạo lý thuyết tốt đến đâu thì việc “đi thực địa” vẫn là cần thiết. Những điều trên áp dụng cho hầu hết mọi lĩnh vực nghiên cứu, tất nhiên bao gồm cả phát triển phần mềm.

Năm nay, GeekBrains, với tư cách là thành viên khoa phát triển di động của trường đại học trực tuyến GeekUniversity, đã bắt đầu làm việc với cơ quan tương tác AGIMA, nhóm của họ là các nhà phát triển chuyên nghiệp (họ tạo ra các dự án tải trọng cao phức tạp, cổng công ty và ứng dụng di động, chỉ vậy thôi). AGIMA và GeekBrains đã tạo ra một môn học tự chọn để tìm hiểu sâu hơn các vấn đề thực tế về phát triển ứng dụng di động.

Hôm nọ, chúng tôi đã nói chuyện với Igor Vedeneev, chuyên gia iOS và Alexander Tizik, chuyên gia về Android. Nhờ họ, môn tự chọn về phát triển di động đã được bổ sung thêm kiến ​​thức thực tế khóa học đặc biệt về khung RxSwift и coroutine trong Kotlin. Trong bài viết này, các nhà phát triển nói về tầm quan trọng của từng lĩnh vực đối với các lập trình viên.

Lập trình phản ứng trong iOS sử dụng RxSwift làm ví dụ

RxSwift và coroutines trong Kotlin - một môn tự chọn trong phát triển thiết bị di động từ AGIMA và GeekBrains
Giáo viên tự chọn Igor Vedeneev: “Với RxSwift, ứng dụng của bạn sẽ thành công”

Học sinh nhận được thông tin gì trong quá trình học tự chọn?

Chúng tôi không chỉ nói về các khả năng của khung mà còn chỉ ra cách sử dụng nó trong sự kết hợp MVVM + RxSwift cổ điển. Một số ví dụ thực tế cũng được thảo luận. Để củng cố dữ liệu thu được, chúng tôi viết một ứng dụng gần nhất có thể với điều kiện vận hành hiện trường. Đây sẽ là một ứng dụng tìm kiếm âm nhạc sử dụng API tìm kiếm iTunes. Ở đó, chúng tôi sẽ áp dụng tất cả các Thực tiễn Tốt nhất, đồng thời xem xét một tùy chọn đơn giản hơn để sử dụng RxSwift trong mô hình MVC.

RxSwift - tại sao một lập trình viên iOS lại cần framework này, nó giúp cuộc sống của nhà phát triển trở nên dễ dàng hơn như thế nào?

Tính hợp lý của RxSwift hoạt động với các luồng sự kiện và kết nối giữa các đối tượng. Ví dụ đơn giản và rõ ràng nhất là các ràng buộc: ví dụ: bạn có thể cập nhật giao diện bằng cách đặt các giá trị mới trong một biến trong viewModel. Do đó, giao diện trở nên dựa trên dữ liệu. Ngoài ra, RxSwift cho phép bạn mô tả hệ thống theo kiểu khai báo, cho phép bạn sắp xếp mã của mình và tăng khả năng đọc. Tất cả điều này giúp phát triển ứng dụng hiệu quả hơn.

Đối với một nhà phát triển, kiến ​​thức về framework cũng là một điểm cộng tốt trong sơ yếu lý lịch, vì hiểu biết về lập trình phản ứng và đặc biệt là kinh nghiệm với RxSwift, được đánh giá cao trên thị trường.

Tại sao chọn khuôn khổ cụ thể này hơn những khuôn khổ khác?

RxSwift có cộng đồng lớn nhất. Nghĩa là, có nhiều khả năng hơn là vấn đề mà nhà phát triển đang gặp phải đã được ai đó giải quyết. Ngoài ra còn có một số lượng lớn các ràng buộc có sẵn trong hộp. Hơn nữa, RxSwift là một phần của ReactiveX. Điều này có nghĩa là có một ngôn ngữ tương tự dành cho Android, chẳng hạn như (RxJava, RxKotlin) và các đồng nghiệp trong hội thảo có thể nói cùng một ngôn ngữ với nhau, mặc dù thực tế là một số hoạt động với iOS, một số khác hoạt động với Android.

Khung này được cập nhật liên tục, các lỗi nhỏ được sửa, hỗ trợ các tính năng từ các phiên bản Swift mới được thêm vào và các ràng buộc mới được thêm vào. Vì RxSwift là nguồn mở nên bạn có thể theo dõi tất cả các thay đổi. Hơn nữa, có thể tự thêm chúng.

RxSwift nên được sử dụng ở đâu?

  1. Ràng buộc. Theo quy định, chúng ta đang nói về giao diện người dùng, khả năng thay đổi giao diện người dùng, như thể phản ứng với những thay đổi của dữ liệu và không thông báo rõ ràng cho giao diện rằng đã đến lúc cập nhật.
  2. Mối quan hệ giữa các thành phần và hoạt động. Chỉ là một ví dụ. Chúng ta cần lấy danh sách dữ liệu từ mạng. Trên thực tế, đây không phải là một thao tác đơn giản như vậy. Để thực hiện việc này, bạn cần gửi yêu cầu, ánh xạ phản hồi vào một mảng đối tượng, lưu vào cơ sở dữ liệu và gửi đến giao diện người dùng. Theo quy định, các thành phần khác nhau chịu trách nhiệm thực hiện các hoạt động này (chúng tôi yêu thích và tuân theo các nguyên tắc CHẤT RẮN?). Có sẵn một công cụ như RxSwift, bạn có thể mô tả hệ thống sẽ làm NHỮNG GÌ và nó sẽ làm NHƯ THẾ NÀO ở những nơi khác. Do đó, việc tổ chức mã tốt hơn sẽ đạt được và khả năng đọc tăng lên. Nói một cách tương đối, mật mã có thể được chia thành một mục lục và chính cuốn sách.

Coroutine trong Kotlin

RxSwift và coroutines trong Kotlin - một môn tự chọn trong phát triển thiết bị di động từ AGIMA và GeekBrains
Giáo viên môn tự chọn Alexander Tizik: “Phát triển hiện đại đòi hỏi phương tiện kỹ thuật hiện đại”

Những gì sẽ được giảng dạy tại khoa GeekBrains trong khuôn khổ khu thương hiệu?

Lý thuyết, so sánh với các phương pháp khác, ví dụ thực tế trong Kotlin thuần túy và trong mô hình ứng dụng Android. Về phần thực hành, học sinh sẽ được xem một ứng dụng trong đó mọi thứ đều được gắn với coroutines. Thực tế là hầu hết các ứng dụng đều hoàn toàn không đồng bộ và tính toán song song. Nhưng các coroutine của Kotlin cho phép giảm bớt mã khó hiểu, không đồng nhất hoặc quá phức tạp và đòi hỏi hiệu năng thành một kiểu duy nhất, dễ hiểu, mang lại lợi ích trong việc thực thi và hiệu suất chính xác.

Chúng ta sẽ học cách viết mã thành ngữ trong coroutine để giải quyết các vấn đề thực tế và có thể hiểu được ngay từ cái nhìn đầu tiên ngay cả khi không có kiến ​​thức sâu về cách thức hoạt động của coroutine (không thể nói về các thư viện như RxJava). Chúng ta cũng sẽ hiểu cách sử dụng các khái niệm phức tạp hơn, chẳng hạn như mô hình tác nhân, để giải quyết các vấn đề phức tạp hơn, chẳng hạn như kho dữ liệu trong khái niệm MVI.

Nhân tiện, có thêm tin tốt nữa. Trong khi môn tự chọn đang được ghi lại, một bản cập nhật cho thư viện Kotlin Coroutines đã được phát hành, trong đó lớp xuất hiện Flow - tương tự của các loại Flowable и Observable từ RxJava. Bản cập nhật về cơ bản giúp hoàn thiện tính năng coroutine theo quan điểm của nhà phát triển ứng dụng. Đúng, vẫn còn chỗ để cải thiện: mặc dù thực tế là nhờ sự hỗ trợ của coroutine trong kotlin/native, người ta có thể viết các ứng dụng đa nền tảng trong Kotlin và không bị thiếu RxJava hoặc các chất tương tự trong Kotlin thuần túy, hỗ trợ cho coroutines trong kotlin/native vẫn chưa hoàn tất. Ví dụ, không có khái niệm về diễn viên. Nhìn chung, nhóm Kotlin có kế hoạch hỗ trợ các tác nhân phức tạp hơn trên tất cả các nền tảng.

Kotlin Coroutines - chúng trợ giúp nhà phát triển Kotlin như thế nào?

Coroutine mang đến cơ hội tuyệt vời để viết mã dễ đọc, dễ bảo trì và bảo mật, không đồng bộ và đồng thời. Bạn cũng có thể tạo bộ điều hợp cho các khung và cách tiếp cận không đồng bộ khác có thể đã được sử dụng trong cơ sở mã.

Coroutine khác với luồng như thế nào?

Nhóm Kotlin gọi coroutine là các luồng nhẹ. Ngoài ra, coroutine có thể trả về một số giá trị vì về cốt lõi, coroutine là một phép tính bị treo. Nó không phụ thuộc trực tiếp vào các luồng hệ thống; các luồng chỉ thực thi các coroutine.

Những vấn đề thực tế nào có thể được giải quyết bằng Coroutine mà không thể hoặc khó giải quyết bằng Kotlin “thuần túy”?

Mọi tác vụ không đồng bộ, song song, “cạnh tranh” đều được giải quyết tốt bằng cách sử dụng coroutine - có thể là xử lý các lần nhấp chuột của người dùng, truy cập trực tuyến hoặc đăng ký nhận các bản cập nhật từ cơ sở dữ liệu.

Trong Kotlin thuần túy, những vấn đề này được giải quyết theo cách tương tự như trong Java - với sự trợ giúp của hàng nghìn khung công tác, mỗi khung đều có ưu và nhược điểm riêng, nhưng không có khung nào hỗ trợ cấp độ ngôn ngữ.

Tóm lại, điều đáng nói là cả hai môn tự chọn (và cả các khóa học chính) đều được cập nhật phù hợp với những thay đổi của điều kiện bên ngoài. Nếu các bản cập nhật quan trọng xuất hiện trong ngôn ngữ hoặc khung, giáo viên sẽ tính đến điều này và sửa đổi chương trình. Có thể nói, tất cả điều này cho phép bạn theo dõi nhịp đập của quá trình phát triển.

Nguồn: www.habr.com

Thêm một lời nhận xét