Saya yakin ada beberapa perbedaan antara pengembangan kerangka kerja atau pustaka dan aplikasi.
Proses pengembangan pada dasarnya sama. Perbedaannya mungkin berkaitan dengan masalah pemasaran dan penyebaran, meskipun saya menemukan bahwa perbedaan terbesar biasanya dalam hal cakupan dan definisi proyek. Ingat bahwa Aplikasi dapat menyertakan atau menggunakan kerangka kerja atau perpustakaan, kerangka kerja mungkin kumpulan perpustakaan.
Saya memiliki keraguan tentang bagaimana menangani organisasi dan manajemen proyek itu: Apakah ada beberapa aturan umum untuk diikuti, tips, praktik terbaik atau sesuatu yang perlu diingat untuk mengembangkan proyek semacam ini?
Organisasi dan manajemen proyek sekali lagi sama untuk setiap proyek pengembangan. Sekali lagi turun ke ruang lingkup. Namun ketika harus menulis kerangka kerja, membayar untuk memiliki visi yang sangat jelas tentang apa yang ingin Anda capai, dan untuk menempatkan aturan desain yang ketat pada antarmuka publik ke kerangka kerja untuk memastikan konsistensi dalam hal presentasi API. Jika Anda mengizinkan setiap pengembang untuk melakukan hal mereka sendiri, Anda akan berakhir dengan kekacauan yang rumit, dan desain API yang sangat tidak elegan.
Saya akan merekomendasikan Ryan Hayes yang kedua untuk membaca Pedoman Desain Kerangka meskipun buku itu sendiri bertujuan untuk mengembangkan kerangka kerja berbasis .NET, karena saran umum ini berlaku terlepas dari teknologi implementasi spesifik yang mungkin Anda pilih untuk digunakan.
Dari pengalaman, saya akan menyarankan berpegang teguh pada prinsip YAGNI klasik dengan mengimplementasikan antarmuka publik yang paling sederhana terlebih dahulu, dan kemudian berkembang untuk menawarkan kontrol dan kedalaman yang lebih besar di kemudian hari, tetapi berhati-hatilah untuk menggunakan nama-nama yang berguna untuk menunjukkan mengapa metode atau kelas diperluas. Saya tidak pernah menjadi penggemar menambahkan "Ex" atau sufiks serupa lainnya ke nama metode, atau menambahkan angka ke definisi Antarmuka yang diperluas. Bedakan fungsi, dan nama antarmuka / metode Anda akan menjadi lebih jelas, dan semoga tidak terlalu membingungkan dan membingungkan.