Mengelola Proyek Cairo dengan Paket, Krate, dan Modul
Saat Anda menulis program-program yang besar, mengatur kode akan menjadi semakin penting. Dengan mengelompokkan fungsionalitas terkait dan memisahkan kode dengan fitur-fitur yang berbeda, Anda akan menjelaskan di mana menemukan kode yang mengimplementasikan fitur tertentu dan tempat untuk mengubah cara kerja suatu fitur.
Program-program yang telah kita tulis sejauh ini berada dalam satu modul di satu file. Saat sebuah proyek berkembang, Anda sebaiknya mengatur kode dengan membaginya menjadi beberapa modul dan kemudian beberapa file. Saat sebuah paket berkembang, Anda dapat mengekstrak bagian-bagiannya menjadi crate terpisah yang menjadi dependensi eksternal. Bab ini membahas semua teknik tersebut.
Kita juga akan membahas cara menyembunyikan detail implementasi, yang memungkinkan Anda untuk menggunakan ulang kode pada level yang lebih tinggi: setelah Anda mengimplementasikan suatu operasi, kode lain dapat memanggil kode Anda tanpa harus tahu bagaimana implementasinya bekerja.
A related concept is scope: the nested context in which code is written has a set of names that are defined as “in scope”. When reading, writing, and compiling code, programmers and compilers need to know whether a particular name at a particular spot refers to a variable, function, struct, enum, module, constant, or other item and what that item means. You can create scopes and change which names are in or out of scope. You can’t have two items with the same name in the same scope.
Cairo memiliki sejumlah fitur yang memungkinkan Anda mengelola organisasi kode Anda. Fitur-fitur ini, kadang disebut secara kolektif sebagai sistem modul, meliputi:
- Packages: A Scarb feature that lets you build, test, and share crates.
- Crates: A tree of modules that corresponds to a single compilation unit. It has a root directory, and a root module defined at the lib.cairo file under this directory.
- Modules dan use: Memungkinkan Anda mengendalikan organisasi dan cakupan dari item-item.
- Paths: A way of naming an item, such as a struct, function, or module.
Dalam bab ini, kita akan membahas semua fitur tersebut, membahas interaksinya, dan menjelaskan cara menggunakannya untuk mengelola cakupan. Pada akhirnya, Anda seharusnya memiliki pemahaman yang kuat tentang sistem modul dan mampu bekerja dengan cakupan seperti seorang profesional!