Tim rekayasa perangkat lunak ingin berbagi pengalaman mereka dengan Anda!

Jan 07 2023
Pendahuluan Halo, ini tim Depresi Linier! Kami telah bekerja sama dalam berbagai proyek rekayasa perangkat lunak, dan ingin berbagi beberapa wawasan yang telah kami peroleh selama ini. Khususnya Lab Komputer Lanjutan.

Pengantar

Halo, ini tim Depresi Linear! Kami telah bekerja sama dalam berbagai proyek rekayasa perangkat lunak, dan ingin berbagi beberapa wawasan yang telah kami peroleh selama ini. Secara khusus Advanced Computer Lab. Kami bangga dengan pencapaian kami, dan berharap dapat terus bekerja sama untuk menciptakan produk dan layanan yang inovatif

Alur Kerja Git

Tim mengikuti proses khusus untuk kontrol versi. Pertama, setiap anggota tim diberi tugas dan tindakan diambil untuk memastikan bahwa tidak ada tugas yang bergantung pada tugas lain. Untuk membantu melacak tugas, kami menggunakan Masalah GitHub , dan untuk pemfilteran yang lebih mudah, kami menggunakan label GitHub . Untuk setiap tugas, cabang terpisah dibuat, dan semua pekerjaan dilakukan di cabang itu. Saat pull request sudah siap dan semua persyaratan terpenuhi, rekan satu tim secara acak akan meninjau kode dan memastikan bahwa kode tersebut sesuai dengan standar yang ditetapkan, sekaligus berkomunikasi dengan pemilik PR. Setelah peninjau dan pemilik PR sama-sama puas dengan kodenya, pull request digeser dan digabungkan ke dalam mastercabang, memastikan bahwa tugas selesai.

  1. Kami menautkan pull request ke masalah, memungkinkan masalah ditutup secara otomatis dan membuat sistem pelacakan yang baik. Ini juga membantu menjawab pertanyaan seperti, "Untuk apa sebenarnya pull request ini?" Ini memberikan visibilitas tambahan ke dalam pekerjaan yang telah dilakukan, memungkinkan kami untuk meningkatkan proses kami dan memastikan bahwa kami mengikuti praktik terbaik. Ini juga membantu kami melacak kemajuan kami dan mengidentifikasi area yang dapat kami tingkatkan.
  2. Mengapa Squash and Merge? Saat mengerjakan tugas tertentu, Anda membuka pull request (PR) seperti yang telah kita diskusikan, mendorong komit ke cabang dengan pesan seperti "perbaiki bla", "selesai dengan bla", dan "menyelesaikan komentar PR". Namun, menggabungkan PR ini ke mastercabang dapat membuat riwayat komit berantakan, karena melihatnya dengan Git Lens tidak akan memberi Anda banyak konteks. Di sinilah Squash and Mergeberperan, karena semua komit pada PR menjadi satu komit, membuat masterriwayat komit cabang bersih dan jauh lebih terorganisir. Tidak hanya itu, menggunakan Git Lens with Squash and Mergeakan menunjukkan kepada Anda tugas PR yang telah diselesaikan, seperti "Menambahkan Model Promosi". Jelas untuk melihat keuntungan menggunakan Squash and Merge!
  3. Tinjauan kode sangat penting untuk memastikan kualitas dan akurasi basis kode. Tinjauan kode tidak hanya memberi tim kesempatan untuk mengevaluasi pekerjaan mereka sendiri, tetapi juga memberikan kesempatan bagi rekan kerja untuk memberikan umpan balik untuk membantu meningkatkan kode dan mengidentifikasi potensi masalah. Tinjauan kode adalah alat yang sangat berharga untuk tim pengembangan mana pun, dan harus disertakan dalam setiap proses rekayasa perangkat lunak. Mereka membantu meminimalkan kesalahan, meningkatkan kualitas basis kode secara keseluruhan, dan mendorong kolaborasi antar anggota tim.

Dalam proyek jangka pendek, menetapkan gaya kode standar tidaklah mudah. Tim biasanya membutuhkan waktu untuk berdiskusi dan mencapai konsensus tentang persyaratan dan batasan untuk gaya pengkodean. Tinjauan kode sangat penting untuk proses ini, karena memberikan pengawasan untuk memastikan semua kode ditulis dengan standar yang sama dan setiap ketidaksesuaian diidentifikasi dan diselesaikan dengan cepat. Memiliki gaya pengkodean yang jelas dan konsisten sangat penting untuk proyek apa pun, karena membantu memastikan basis kode dapat dipertahankan dan perubahan di masa mendatang dapat diterapkan tanpa masalah yang tidak terduga..

Linter dan Pemformat

Menggunakan linter dan pemformat sangat penting, karena membantu memastikan bahwa kode kita konsisten dan mengikuti praktik terbaik. Ada banyak alat yang tersedia untuk tumpukan kami, dan penting untuk memilih yang tepat yang sesuai dengan kebutuhan pengembangan kami. Dalam kasus kami mengembangkan proyek menggunakan TypeScript, kami memilih preittersebagai pemformat dan ts-lintsebagai linter. Alat-alat ini membantu kami menjaga basis kode kami tetap teratur, mudah dibaca, dan mutakhir. Mereka membantu kami mematuhi standar pengkodean, dan memastikan bahwa kode kami bebas dari potensi kesalahan.

Pra-Komitmen

Kami menggunakan pre-commit untuk menerapkan gaya; itu adalah alat hebat yang diinstal pada repositori git lokal Anda dan mencegah Anda melakukan kecuali pemformat dan linter senang . Tetapi bagaimana jika seseorang lupa menginstalnya secara lokal? Mereka mungkin melakukan kode dengan kesalahan - yang dapat menyebabkan masalah di kemudian hari. Itu sebabnya Tindakan GitHub pra-komitmen sangat berguna; itu berjalan dengan setiap dorongan yang Anda lakukan dan memastikan bahwa kode Anda memenuhi standar. Dengan cara ini, Anda dapat yakin bahwa pemformat dan linter senang, dan kode Anda dalam kondisi yang baik.

Pasangan Pemrograman

Pemrograman pasangan adalah cara yang bagus untuk membantu tim bekerja lebih baik. Bekerja bersama memungkinkan tim untuk berbagi ide, menghasilkan solusi dengan cepat, dan belajar dari satu sama lain. Itu juga membangun persahabatan dan memperkuat tim. Pemrograman berpasangan membagi tugas-tugas sulit menjadi bagian-bagian yang lebih kecil, dan meminta seseorang meninjau pekerjaan membantu memastikan akurasi. Pada akhirnya, pair programming adalah alat yang sangat baik untuk meningkatkan efisiensi, produktivitas, dan kolaborasi.

Semangat dan Visi Tim

Kesuksesan tim bergantung pada tujuan yang sama dan kerja keras. Anggota yang berkomitmen bersedia bekerja ekstra dapat menghasilkan hasil yang lebih baik dan proses kerja yang lebih cepat. Belajar dan mencoba hal-hal baru adalah kunci bagi tim untuk berkembang dan terus maju. Dibutuhkan keberanian untuk mencoba sesuatu yang baru, tetapi diperlukan untuk hasil yang lebih baik.

Mengikuti standar

API REST

REST adalah seperangkat standar yang digunakan untuk membangun API web. Sebagai ilustrasi, sumber daya Pengguna dapat direpresentasikan menggunakan standar REST. Untuk melihat semua pengguna, permintaan API menggunakan metode GET dan URI /usersakan dikirim ke server. Untuk menambahkan pengguna baru, permintaan API menggunakan metode POST dan URI yang sama akan dikirim. Untuk melihat satu pengguna, permintaan API menggunakan metode GET dan URI /users/:idakan dikirim, di mana :idID pengguna. Demikian pula, untuk memperbarui pengguna, permintaan API menggunakan metode PUT dan URI yang sama akan dikirimkan. Terakhir, untuk menghapus pengguna, permintaan API menggunakan metode DELETE dan URI yang sama akan dikirimkan.

Selain itu, setiap pengguna dapat memiliki sekumpulan postingan yang juga dapat direpresentasikan menggunakan standar REST. Untuk melihat semua posting pengguna, permintaan API menggunakan metode GET dan URI /users/:id/postsakan dikirim, di mana :idID pengguna. Untuk menambahkan postingan baru, permintaan API menggunakan metode POST dan URI yang sama akan dikirim. Untuk melihat satu posting, permintaan API menggunakan metode GET dan URI /users/:id/posts/:post_idakan dikirim, di mana :post_idID dari posting tersebut. Demikian pula, untuk memperbarui posting, permintaan API menggunakan metode PUT dan URI yang sama akan dikirim. Terakhir, untuk menghapus postingan, permintaan API menggunakan metode DELETE dan URI yang sama akan dikirim.

Struktur Kode

Paling depan

  • Struktur Fraktal : Setiap halaman web terdiri dari komponen bersarang, dan begitu juga proyek React apa pun. Untuk menghindari kerepotan yang meningkat seiring bertambahnya proyek dan jumlah komponen, kami telah menggunakan Fractal Structureuntuk mengatur komponen kami. Untuk ilustrasi lebih lanjut, lihathttps://hackernoon.com/fractal-a-react-app-structure-for-infinite-scale-4dab943092af.
  • Penggunaan Custom Hooks : Penggunaan custom hooks memungkinkan kita untuk mengembangkan logika pengambilan dari tsxkomponen yang sebenarnya, sehingga mempertahankan dan mengubah logika pengambilan dijauhkan dari penataan dan penataan komponen.
  • Penggunaan Komponen Bergaya : alih-alih menggunakan htmlkelas dan cssfile untuk menata setiap halaman, kami telah menggunakan styled componentspustaka yang memungkinkan kami untuk menulis Komponen Bereaksi yang dapat mewarisi gaya css dari html, mui, atau bahkan gaya komponen Bereaksi lainnya dan mengganti gaya itu.
  • Manfaat
  • Hindari kerumitan menulis gaya inline.
  • Tingkatkan Kegunaan Kembali.
  • Tingkatkan Keterbacaan komponen
  • Atur impor Anda: Salah satu hal terpenting yang telah kami pelajari selama perjalanan ini adalah mengatur impor. Ketika Anda memiliki basis kode yang besar dan banyak komponen, Anda mendapati diri Anda mengimpor banyak hal di setiap file untuk membagi kode Anda dan membuatnya tetap dapat dibaca. Tetapi ketika Anda memutuskan untuk memfaktorkan ulang atau mengubah struktur file, Anda akan kesulitan memperbaiki pernyataan impor. Saat kami merencanakan proyek, kami menemukan artikel bagus ini yang membahas tentang teknik hebat untuk menangani masalah ini. Saya akan mencoba meringkasnya.
  • Use Barrel Pattern : Untuk setiap modul atau direktori, tambahkan index.jsfile untuk mengimpor dan mengekspor komponen yang digunakan dan diimpor di luar direktori ini, agar tidak mengimpor setiap file secara terpisah.
  • dari pada
  • import CourseHeader from '../../CourseSections/CourseHeader';
    import CourseContent from '../../CourseSections/CourseContent';
    import CourseReviews from '../../CourseSections/CourseReviews';
    

    import {
     CourseHeader,
     CourseContent,
     CourseReviews
    } from '../../CourseSections';
    

import {
 CourseHeader,
 CourseContent,
 CourseReviews
} from '../../CourseSections';

import {
 CourseHeader,
 CourseContent,
 CourseReview
} from '@internals/components';

Ujung Belakang

  • Struktur file yang tepat membuat pengembangan backend lebih mudah. Bukan ide yang baik untuk meletakkan seluruh backend dalam satu file besar, oleh karena itu penting untuk memisahkan model, pengontrol, rute, layanan, dan utilitas.
  • Menempatkan logika pengontrol pada rute itu buruk, seperti halnya menempatkan logika layanan pada pengontrol, dll. Penggunaan REST yang benar akan membantu mengatur rute dan pengontrol.
  • Desain database yang tepat juga sangat penting. Ini menghemat waktu, mengurangi kerumitan menjaga konsistensi, dan menghindari redundansi data sebanyak mungkin. Selain itu, ini memengaruhi kinerja, dan ada kompromi yang perlu dipertimbangkan saat menggunakan kait vs. bidang virtual, …dll

Penggunaan yang tepat dari prinsip-prinsip rekayasa perangkat lunak sangat penting dan sangat bermanfaat selama proses berlangsung. Ini memengaruhi kualitas kode dan waktu yang dihabiskan untuk proyek.

Tepat di sini menunjukkan:

  1. Penggunaan prinsip yang benar, memahami trade-off, misalnya, kapan harus membuat kode ke antarmuka dan kapan mengizinkan duplikasi untuk mengatasi penggabungan.
  2. Tidak over-engineering; ini sangat penting untuk diingat. Menambahkan kerumitan pada perangkat lunak bukanlah hal yang baik; tolong ingat itu!

Tim Depresi Linear telah bekerja keras untuk menyusun proses rekayasa perangkat lunak yang komprehensif. Kita telah membahas pentingnya kontrol versi, gaya kode, linter dan pemformat, pre-commit, pair programming, semangat dan visi tim, dan mengikuti standar. Semua topik ini sangat penting untuk memastikan proyek yang sukses. Kami bangga dengan kemajuan kami dan berharap untuk melanjutkan pekerjaan kami. Anda dapat melihat kemajuan kami di repositori GitHub kamihttps://github.com/Advanced-Computer-Lab-2022/Linear-Depression.