Salam, rakan sekerja. Hari ini kita akan bercakap tentang jenis kerja persediaan yang perlu anda lakukan sebelum anda memulakan pengekodan secara liar. Lebih khusus lagi, tentang merancang dan mencipta seni bina aplikasi. Tetapi di mana untuk bermula? Bagaimana untuk membina seni bina ini? Seperti segala-galanya, anda perlu bermula dari awal. Iaitu - dengan IDEA. Idea projek kami adalah untuk mencipta bot telegram yang berguna dengan fungsi asas. Mari kita ulangi dengan tepat: "Saya, sebagai pengguna, ingin menerima pemberitahuan apabila artikel baharu diterbitkan dalam kumpulan tersebut di JavaRush yang menarik minat saya." Mengikut prinsip YAGNI, kami akan membina aplikasi kami. Ini bermakna kita hanya akan mengambil apa yang kita perlukan. Kami tidak akan mencipta fungsi terlebih dahulu dan dalam simpanan hanya kerana kami mahu dan suatu hari nanti ia mungkin berguna. Ya, kami akan mencipta aplikasi yang boleh dibaca dan boleh dikembangkan, tetapi ini tidak bermakna kami akan mencipta skema pangkalan data "untuk pertumbuhan". Untuk tidak menyokong "pertumbuhan" ini, saya memutuskan bahawa adalah lebih baik untuk meninggalkannya sama sekali. Ini akan membantu kami mengelakkan sokongan yang tidak perlu semasa pembangunan dan ujian yang tidak perlu. Kemudian, apabila projek kami masuk ke dalam pengeluaran (sekali lagi Anglicism, daripada singkatan prod - production), kami akan dapat melakukan sesuatu yang lebih. Sebaik sahaja anda telah memutuskan idea, anda perlu menjadi sedikit nakal dan melukis. Apa yang hendak dilukis? Kami memerlukan keupayaan untuk menyimpan data pada langganan kepada kumpulan pengguna yang berbeza. Saya tahu bahawa anda boleh menggunakan ID pengguna dalam bentuk ID sembang dalam Telegram. Dan terdapat idea tentang bagaimana pencarian untuk artikel baharu sebenarnya akan diteruskan: kami akan mencari dalam semua kumpulan yang mempunyai langganan untuk artikel baharu dan menghantarnya ke sembang. Berdasarkan ini, kami mendapat yang berikut sebagai anggaran pertama (ini adalah perkembangan tanpa hiasan): Saya tidak berharap anda akan memahami tulisan tangan saya: Saya ingin menunjukkan dengan tepat bagaimana dan di mana pembangunan bermula. Peringkat pertama telah selesai: kami entah bagaimana telah memutuskan apa yang akan berlaku. Model/jadual dalam pangkalan data diterangkan di atas. Tetapi ini adalah draf: ia boleh dan harus digilap dan dibawa ke dalam bentuk yang lebih mudah dibaca. Semasa saya menggilap, saya teringat bahawa saya juga ingin mendapatkan statistik tentang kerja bot. Menambah ini. Dalam lukisan ini lebih daripada jelas apa dan bagaimana ia akan disusun. Iaitu, jadual dan medan apa yang akan ada di dalamnya, apakah nama entiti untuk jadual tersebut. Diputuskan bahawa terdapat beberapa daripada mereka:
- Pengguna - maklumat tentang pengguna telegram yang akan menggunakan bot kami. Seperti yang anda lihat, kami hanya menyimpan ID sembang dan bendera sama ada pengguna aktif atau tidak. kenapa? Kerana matlamat kami bukan untuk mengumpul maklumat tentang pengguna, tetapi untuk memberi manfaat kepada mereka;
- GroupSub - di sini akan terdapat maklumat tentang kumpulan yang anda miliki langganan dan artikel terkini yang dihantar kepada pelanggan;
- Statistik - Saya belum mencipta skema untuknya - kami akan melakukannya kemudian. Ini bukan matlamat utama dalam MVP projek.
Buat repositori untuk kerja
Akhir sekali, anda boleh membuat repositori untuk bekerja dengan bot telegram.- Kami mengisi item yang sudah biasa kepada kami - nama repositori, penerangan ringkasnya.
- Tambah lesen - Apache 2.0 (anda boleh memilih lesen mengikut budi bicara anda).
- Projek kami kini tersedia - berikut adalah pautan kepadanya: JavaRush Telegrambot .
Buat projek dalam repositori
Untuk bekerja dengan projek, adalah baik untuk menggunakan alat GitHub, seperti projek. Apa ini? Ini ialah tempat di mana anda boleh membuat tugasan, menjejaki penyelesaiannya dan menyimpan status tugasan. Tentukan siapa yang akan melaksanakannya dan banyak lagi. Untuk melakukan ini, dalam projek yang dibuat kami akan menemui butang Projek , dan di sana kami akan membuat yang baru: Seperti yang anda lihat, di sini saya menunjukkan nama projek itu, menerangkannya dan memilih templat yang akan kami kerjakan - Kanban automatik. Bagi kami sekarang ini tidak begitu penting maksudnya. Perkara utama ialah kami akan mempunyai papan dengan tugas, dibahagikan kepada lajur, di mana setiap lajur akan menjadi status tugas:- Untuk melakukan - semua tugas yang dirancang untuk dilakukan;
- Sedang dijalankan - tugasan yang sedang diusahakan;
- Selesai - tugasan yang telah disiapkan dalam projek ini.
Menulis isu (isu) untuk projek
Untuk memahami tugasan yang hendak ditulis, mari tentukan perkara yang akan kami ada dalam projek itu. Kami memerlukan aplikasi yang boleh dilancarkan dengan mudah dan cepat, supaya kami boleh mengakses pangkalan data, supaya kami boleh mengurus dan menukar skema pangkalan data, supaya kami boleh membuat permintaan REST dalam JavaRush untuk mendapatkan data pada artikel. Berdasarkan ini, anda boleh memilih teknologi berikut:- SpringBoot - sebagai rangka kerja untuk aplikasi kami,
- Spring Data - untuk bekerja dengan pangkalan data,
- Flyway - untuk bekerja dengan migrasi pangkalan data,
- MySQL - sebagai pangkalan data untuk projek,
- Telegrambot StringBoot starter - perpustakaan untuk bekerja dengan bot telegram,
- Unirest ialah perpustakaan untuk bekerja dengan permintaan REST.
Templat penciptaan tugas
Kami akan membuat tugasan menggunakan templat berikut:- Nama tugas akan kelihatan seperti ini: JRTB-{IssueNumber}:{IssueDescription} , di mana:
- {IssueNumber} ialah nombor siri isu. Mari kita ambil satu lagi dari masalah terakhir;
- {IssueDescription} - penerangan ringkas tentang isu tersebut.
- Dalam badan tugasan kami akan membuat penerangan yang lebih terperinci mengenainya (kadangkala ia mungkin bertepatan dengan penerangan dalam nama tugas).
- Kriteria Penerimaan ialah senarai keperluan, selepas itu tugas boleh dianggap selesai. Jadi untuk bercakap, kriteria untuk menerima tugas. Menggunakannya, penyemak (dari pengulas bahasa Inggeris - penyemak - orang yang melihat cara tugasan diselesaikan) boleh memahami sama ada tugasan itu selesai sepenuhnya atau tidak.
- [CIRI] JRTB-0: cipta projek but Skeleton Spring - semuanya jelas di sini: anda perlu melakukan bahagian pertama daripada apa yang kami lakukan dalam artikel sebelumnya.
- [CIRI] JRTB-2: tambah bot telegram pada projek - tambah bot kosong yang hanya akan bertindak balas dan mengatakan bahawa ia masih hidup dan sihat.
- [CIRI] JRTB-3: Laksanakan corak Perintah untuk telegrambot - mari kita sediakan pendekatan yang betul untuk bekerja dengan arahan dalam bot telegram. Setakat ini untuk beberapa pasukan.
- [CIRI] JRTB-1: Tambah lapisan repositori - ini adalah salah satu tugas terbesar - ia menggabungkan semua yang perlu dilakukan untuk berfungsi dengan pangkalan data.
- [CIRI] JRTB-5: Sebagai pengguna, saya ingin menambahkan kumpulan pada langganan - ini sudah pun menjadi Kisah Pengguna pertama dalam pemahaman Agile. Ini akan menjadi manfaat sebenar untuk pengguna kami: anda boleh menambah langganan kumpulan pada bot.
- [CIRI] JRTB-12: Laksanakan penjadualan untuk menghantar pemberitahuan tentang artikel baharu - di sini akan menjadi pelaksanaan mencari artikel baharu jika ia diterbitkan untuk setiap kumpulan dan dihantar kepada semua pengguna yang melanggan kumpulan tersebut.
- [CIRI] JRTB-6: Sebagai pengguna, saya ingin melihat senarai langganan kumpulan saya - semuanya mudah di sini: kami menambah arahan yang memaparkan senarai semua kumpulan yang dilanggan oleh pengguna.
- [CIRI] JRTB-7: Sebagai Pengguna, saya ingin mengalih keluar langganan kumpulan daripada langganan saya - di sini anda perlu mengalih keluar langganan pengguna untuk kemas kini dalam kumpulan.
- [CIRI] JRTB-8: Sebagai Pengguna, saya ingin menetapkan tidak aktif menggunakan bot - melaksanakan menghentikan bot. Iaitu, semua yang perlu dilakukan dalam sistem kami untuk menghentikan kerja. Tambahkan arahan /stop pada pemprosesan.
- [CIRI] JRTB-9: Sebagai Pengguna, saya mahu mula bekerja dengan bot ATAU tetapkan aktif jika saya menggunakannya sebelum ini - tambah pemprosesan perintah /start. Tepat seperti yang kita mahukan.
- [CIRI] JRTB-10: Sebagai pentadbir, saya ingin melihat statistik bot - mencipta koleksi statistik bot. Menambah keupayaan pentadbir.
- [CIRI] JRTB-11: Sebagai pengguna, saya ingin melihat dokumentasi untuk bot telegram ini - menulis dokumentasi. Ya, ya, kawan, anda tidak boleh hidup tanpanya, dan semakin cepat anda belajar untuk melakukan ini, semakin baik untuk anda))
Mengisi repositori
Apa lagi yang perlu dilakukan SEBELUM kita memulakan pengekodan? - Penulis, berapa banyak perenggan ini boleh anda tambah, adakah anda menariknya keluar dari jurang?? — Tidak, kualiti kerja ditunjukkan dalam butiran. Dan mereka adalah orang yang masuk akal. Jadi mari kita tambah satu lagi butiran. Agar projek itu menjadi popular dan mudah difahami oleh pembangun lain, ia perlu diisi. Apa yang perlu saya tambah? Saya menerangkan senarai lengkap perkara yang boleh dilakukan dalam artikel Mengoptimumkan kerja dengan projek anda di GitHub: mengenali Github Template Repository . Saya sangat mengesyorkan membacanya. Adalah penting bagi kita untuk mempunyai versi yang jelas, pemahaman yang jelas tentang apa yang kita lakukan. Oleh itu, saya menambah fail RELEASE_NOTES yang mana perubahan pada projek kami akan direkodkan. Sebagai contoh, anda boleh melihat RELEASE_NOTES daripada projek saya (ya, mengapa tidak tunjukkan perkara yang saya berikan tenaga dan kreativiti saya). Perubahan untuk setiap versi baharu diterangkan di sana. Saya juga menambah templat untuk membuat tugasan baharu, yang mempunyai 4 pilihan:- Laporan Pepijat ialah tugas yang dibuat oleh pengguna/penguji yang menemui pepijat dalam kerja mereka. Ini adalah perkara yang sangat penting: ia membantu mengurus pembetulan pepijat;
- Permintaan ciri ialah tugas untuk menambah fungsi baharu. Semua tugas pertama pada projek adalah tugas permintaan ciri;
- Permintaan penambahbaikan - tugas untuk menambah baik operasi aplikasi. Contohnya, untuk menukar jawapan ujian apabila bekerja dengan bot. Saya bukan seorang penulis teknikal dan saya boleh menghasilkan jawapan yang tidak betul sepenuhnya. Jadi jika anda mempunyai keinginan dan kemampuan, tawarkan :)
- Soalan ialah soalan untuk pembangun tentang pengendalian aplikasi. Satu perkara yang sangat berguna. Katakan tiada pemahaman tentang kerja atau terdapat keraguan tentang beberapa soalan - anda boleh bertanya soalan dengan cara ini dan mendapatkan jawapan secara langsung.
GO TO FULL VERSION