Dompet Tantangan Seluler: hasil kompetisi dan analisis rinci solusi oleh tim pengembangan

Kami memiliki dua platform, hadiah uang 1.000.000 rubel, 6 hadiah, 26.000 baris kode untuk dibaca dan dievaluasi, serta 20 halaman umpan balik, beberapa kriteria evaluasi, kotak Badweiser, satu pint eter murni dan 12 gelembung obat penenang. ... Bukan berarti semua ini mutlak diperlukan untuk mengadakan kompetisi pengembang, tetapi jika Anda sudah mulai mengevaluasi solusi, maka Anda perlu mendekati masalah tersebut dengan serius.





Kami merangkum hasil kontes Dompet Tantangan Seluler dan menganalisis secara rinci keputusan para peserta.





Tugas

Cobalah untuk menangkap perasaan dompet fisik di aplikasi Wallet dan bayangkan kembali dua layar: layar utama dengan daftar kartu dan layar dengan detail kartu.





Sarankan penerapan teknis dari layar ini dan transisi di antara mereka. Menampilkan logika, menyortir daftar peta, UI / UX, animasi, dan semua nuansa lainnya terserah Anda.





1





2 (iOS Android)





1 000 000





100 -  





1  





13





11  





6





iOS 





1 (250 000 ) โ€”  





2 (150 000 ) โ€”  





3 (100 000 ) โ€”





Android





1 (250 000 ) โ€”  





2 (150 000 ) โ€”  





3 (100 000 ) โ€”





, โ€” .





:





  1. .





  2. , .





  3. .





  4. .





:





  1. iOS- Android-, -.





  2. Android: 23+ API.





  3. iOS: iOS 11+.





iOS

, Swift, . 11, . -, , , API. Xcode , SDK .





DI (Dependency Inversion) 

, , .





SR (Single Responsibility)

: , , , . / .





, . iOS- โ€” MyClassName MyClassNameProtocol.





, ( -). , ( ), .





reference value ,

:





class RequestModel: Request {
    var method: HTTPMethod = .get
    var headers: [String : String]? = nil
    var url: URL = URL(string: "https://textures.cardsmobile.ru")!
    var parameters: [String : String]? = nil
    var contentType: ContentTypeRequestEnum = .applicationURLEncoder
}
      
      



struct, class, .





3rd party

, Alamofire . . , Alamofire , AF.request(url).response { โ€ฆ } . URLSession.shared.dataTask(with: url) { โ€ฆ }.resume()? , . , . , โ€” ยซ URLSession ยป. , .





Core Data

(NSManagedObjectContext) save() . NSManagedObjectContextDidSave background view . , .





Core Data.





DispatchQueue.global

- , , async ( ), - , , .





( ), . Apple .





background Quality Of Service (QoS)

background , ( , , , ). QoS utility. .





โ€” .





, . , โ€” Image Resizing Techniques .





UIViewController

โ€” , . viewWillAppear viewWillDisappear ( , ). , , . , App Store . 





UIApplicationDidEnterBackgroundNotification UIApplicationDidBecomeActiveNotification, , .





UI . , Safe Area.





, . , - , ยซ ยป , . ( ), Xcode Edit > Format > Spelling and Grammar > Check Spelling While Typing.





, , , UI. Xcode Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. 





, Debugging Tricks and Tips.





(warnings)

(swiftlint, , deprecated ..), ..





: . :)





โ€” , , . .





: self.viewModel.objects().count%5 โ€” , - . 





, ยซ ยป. ยซ. ยป .





-, , . , View, Interactor, Model Builder .





โ€” DI (Dependency Injection). 





Dependency Container, .





Kingfisher , ImageLoader. 3rd party .





final ,

- . final . Whole Module Optimization final. , , , final . .





#1 ,









#2 , ,





-

, -, , -, , UI.





Apple Dark Mode, , .





โ€” .





#1





#2





Android-

Kotlin, API 23+ .





. UI. drag&drop.





DI (Dependency Inversion), Singleton

CardsInteractor domain- CardsRepository data-, SOLID. Interface CardsRepository, Domain-.





. : ยซ ยป github.





, .





Clean Architecture: data, domain, presentation

CardsInteractor Storage . . , CardsInteractor Repository DataSource. CardsViewModelImpl , , , .









-, CharSequence?.isNotNullAndEmpty, List<T>.isEmpty 





, โ€”  .  , , - Kotlin CharSequence?.isNullOrEmpty(), isEmpty() ..





view info1TitleTextView, info2TitleTextView, info3TitleTextView, info4TitleTextView. , view. .





deprecated

window.decorView.systemUiVisibility, View.SYSTEMUIFLAGLAYOUTFULLSCREEN, SYSTEMUIFLAGLAYOUTHIDE_NAVIGATION. deprecated , .





Clean Architecture

, , , , . .





ยซยป .





, :)





#1





#2 ยซ3ยป ,





#3






: , , , , , , , , , , . 





! . 





- Cardsmobile | Engineering, , iOS Android, QA backend. , .












All Articles