cari

Rumah  >  Soal Jawab  >  teks badan

ios - 关于体量大的APP,代码的如何架构依赖,才会对于后期迭代修改带来方便?

提几个问题 大家一起来讨论下
1.一款迭代开发2-3年以上的APP怎么样的项目架构才是比较好的呢?
(1)一般现在 小团队开发(1-3人) 新的app 一般都会使用 pod来进行依赖管理第三方库,当然也可以管理本地的库。
这样子 第三方库基本上不需要去太大的搭理,只需要管理好podfile就可以了。
代码里使用mvc也好 mvvm也罢,文件不管怎么分,基本上就2个工程,一个主app工程 一个pod管理的第三方库工程。
(2)但是如果老项目 依然是小团队开发的 历史遗留 可能就没有使用pod了,可能混乱一点的 就只有一个主工程了,第三方库直接下下来拖进去好了,更新么就把文件换掉即可。
但是可能依然只有1 ,2个开发,其实影响并不是很大。
但是如果老项目是5人以上的话,这个影响就可以发生了,这个时候 项目分工 迭代开发 可能就会发生很混乱了。那这种项目有啥好的解决办法呢。
(3)现在大公司 大项目 例如微信 网易新闻等 这种体量很大的app,大部分应该是多工程 多依赖 来进行管理的。抽出和业务依赖非常小的模块作为核心库,就算以后新开发的app也可以用到,这部分核心库 一般都是内部封装 提供,framwork静态库供其他team使用,而且各不同业务的team之间也是代码保密状态 只有api沟通。不同的业务就是不同的SDK,最后一个app就是 多个不同的库 组合在一起 加耦合性高的业务代码进行组合。(以上都是小人之见,个人还没有参与过 10人以上的开发)。

毕竟软件项目都是不断成长的 ,是否在软件体量达到一定量的时候 就需要进行(3)那种模式的重构,还是说 就照着(1)(2)那种方式进行下去,毕竟重构的成本太高,尤其是软件已经有大量用户基础。

PHPzPHPz2888 hari yang lalu443

membalas semua(3)saya akan balas

  • PHP中文网

    PHP中文网2017-04-17 17:30:23

    Saya rasa saya mempunyai hak untuk bersuara dalam isu ini

    PS: Ada satu perkara yang akan saya nyatakan di hadapan kerana ia penting. Cuma luangkan masa untuk menyemak kod yang anda tulis.

    Saya menulis artikel yang panjang di bawah, tetapi saya mendapati bahawa saya tidak menjawab soalan poster asal:
    (1) Betul
    (2) Ia bergantung pada situasi projek lama, dan anda boleh juga menyusunnya dengan menukar kod. Jika berbilang orang bekerjasama, mesti ada pembahagian kerja yang jelas dan sikap terhadap menulis SDK
    (3) Anda betul, ia adalah sama sebelum ini
    (4) Walaupun dalam syarikat kecil, dua atau tiga orang, atau bahkan satu orang, boleh Ia adalah yang terbaik untuk membangunkan mengikut (3), jika tidak, anda mungkin mendapati bahawa asas kod anda hanya mempunyai sekumpulan projek dalam satu, dua, tiga atau empat tahun tanpa mengekstrak intipati

    Lihat projek hebat ini dan anda akan tahu Sun7400/YYKit Projek hebat ini hanya berfungsi pada iOS selama lebih daripada setahun

    Tugas pertama saya ialah membangunkan SDK navigasi peta Kemudian, saya turut mengeluarkan apl kecil di App Store, dan juga menyumber luar projek besar seperti pelanggan berita dan platform beli-belah dalam talian, sebenarnya, semuanya mempunyai persamaan. . Mengenai struktur projek, saya mempunyai cadangan berikut:

    1. Gunakan cocospods atau alat kod pihak ketiga yang lain untuk mengurus kod pihak ketiga yang diperlukan dalam cara yang bersatu. Ia adalah mudah untuk digunakan beberapa tahun yang lalu, saya merasakan bahawa ia sangat berguna sekarang

    2. Jangan sengaja memenuhi teori MVC atau MVVC Semua pembangunan harus berdasarkan
    3. sebagai standard asas

      低耦合

    4. Antara projek, yang mempunyai kadar penggunaan semula yang paling rendah ialah
    5. , jadi Storyboard digunakan untuk melengkapkan reka letak halaman dan kod UI ViewController diabaikan Kelebihannya ialah apabila UI itu disemak, tidak perlu mengubah suai Kod VC banyak

      ViewController

    6. Fungsi yang paling boleh digunakan semula ialah beberapa fungsi asas, seperti pengekodan URL, pemotongan UIImage, pengindeksan MD5, dll. Fungsi ini dikhususkan kerana gandingannya sangat rendah
    7. Kadar penggunaan semula tertinggi seterusnya ialah beberapa algoritma teras, seperti pengiraan laluan enjin navigasi, penipisan, dsb. Malah, semasa membuat projek sekarang, terdapat sangat sedikit algoritma yang perlu diusik sendiri ada, pam keluar dan rangkumkannya, jangan tulis secara santai dalam VC
    8. Kawalan tersuai, jangan malas dan warisi enkapsulasi, termasuk Sel Ringkasnya, jangan bina kawalan dalam VC
    9. Jika anda telah cuba merangkum semua kaedah TableViewDelegate dalam VC secara berasingan, adakah anda telah cuba mewarisi TableView dan membiarkannya membuat DataSource sendiri?
    10. Rangkaian, CoreData dan Model dirangkumkan menggunakan rangka kerja pihak ketiga lanjutan, seperti
    11. , dan beberapa rangka kerja model json->digabungkan secara automatik

      MagicalRecord

    12. Kod kaedah melebihi 20 baris, pertimbangkan sama ada perlu untuk memisahkannya
    13. Akhir sekali, berikut ialah struktur umum projek saya

      Direktori ViewController, berikut dibahagikan kepada direktori mengikut halaman yang berbeza
    • Lihat Kawalan dan Sel Tersuai Direktori
    • Ke-3 terus tarik masuk kod pihak ketiga projek
    • Kod fungsi fungsi
    • Model CoreData dan pengawal pangkalan data
    • Antara muka rangkaian API

    Salah satu faedah terbesar klasifikasi ialah anda boleh mencari kod dengan cepat, dan walaupun projek itu besar, anda boleh menjelaskan dengan jelas proses menjalankan transaksi.

    Akhir sekali, jika anda menggunakan CoreData, disyorkan untuk menyelidik NSFetchedResultsController
    Ini adalah zsy78191/DEFetchRC yang saya bungkus

    Semoga berjaya

    balas
    0
  • 高洛峰

    高洛峰2017-04-17 17:30:23

    Keberkesanan kos bergantung kepada kitaran hayat projek
    Sekiranya projek itu tidak akan dibatalkan dalam jangka masa pendek dan perlu diubah lagi dan lagi, maka... kesakitan jangka panjang lebih teruk daripada kesakitan jangka pendek

    Pemfaktoran semula tidak perlu diselesaikan dalam satu versi Anda boleh membongkar kod lama sedikit demi sedikit dan menulis ujian sebanyak mungkin untuk memastikan tingkah laku kekal tidak berubah

    balas
    0
  • 阿神

    阿神2017-04-17 17:30:23

    Soalan yang bagus. Beri perhatian dahulu.

    balas
    0
  • Batalbalas