Anatomy of Function
Pada modul pengenalan, kita sudah belajar tentang function (fungsi). Mulai dari bagaimana cara kita mendeklarasinya, menentukan apakah fungsi tersebut dapat mengembalikan nilai, serta melampirkan sebuah argumen ketika fungsi tersebut digunakan.
Pada modul ini kita akan membahas lebih dalam tentang bagian apa saja yang terdapat dalam sebuah fungsi. Pada dasarnya sebuah fungsi memiliki 2 (dua) bagian utama yaitu function header dan function body.
![20190430170924a928f8193ca67c7e5cadbffd71e5362e.png](https://dicodingacademy.blob.core.windows.net/academies/20190430170924a928f8193ca67c7e5cadbffd71e5362e.png)
Function Header
Function header adalah bagian yang merupakan konstruksi dari sebuah fungsi untuk menentukan perilakunya akan seperti apa. Di dalam function header terdapat visibility modifier, kata kunci fun, nama, daftar parameter dan nilai kembalian dari fungsi tersebut.
![2019043017104269cd96be545849a85de530328432cba7.png](https://dicodingacademy.blob.core.windows.net/academies/2019043017104269cd96be545849a85de530328432cba7.png)
Visibility Modifier
Visibility modifier atau tingkatan akses merupakan bagian spesifik dari sebuah bahasa pemrograman yang ditujukan untuk mengatur bagaimana hak akses dari sebuah kelas, fungsi, properti dan variabel.
![201904301711570f1b86a7e9b4d5a2de98a6fbe44c0e43.png](https://dicodingacademy.blob.core.windows.net/academies/201904301711570f1b86a7e9b4d5a2de98a6fbe44c0e43.png)
Secara default ketika kita membuat sebuah fungsi baru, ia akan memiliki modifier public. Artinya fungsi tersebut dapat diakses dari luar kelas. Sedangkan contoh pada ilustrasi di atas adalah sebuah fungsi yang memiliki modifier private. Maka akses dari fungsi tersebut terbatas hanya untuk kelas di mana fungsi tersebut dideklarasi.
Terdapat beberapa visibility modifier yang akan kita pelajari bersama pada modul Object Orientation Programming nanti.
Function Name
Setelah visibility modifier, selanjutnya adalah kata kunci fun . Ini digunakan untuk menandakan jika baris kode tersebut merupakan sebuah fungsi yang kemudian diikuti oleh nama dari fungsi tersebut.
![201904301713383dd97e80f0d594ba531bdc59f07717dc.png](https://dicodingacademy.blob.core.windows.net/academies/201904301713383dd97e80f0d594ba531bdc59f07717dc.png)
Nama dari sebuah fungsi merupakan sebuah identifier yang akan memudahkan kita untuk menggunakan fungsi tersebut. Perlu diketahui bahwa kita tidak bisa memberikan nama yang sama untuk beberapa fungsi.
Untuk penamaan dari sebuah fungsi sendiri menggunakan format penulisan camelCase. Nama dari fungsi tersebut diawali dengan huruf kecil dan huruf besar untuk kata berikutnya. Ini merupakan standar penulisan resmi yang sudah ditentukan
Function Parameter
Ketika kita mendeklarasikan sebuah fungsi baru, kita bisa atau tanpa menetapkan parameter tersebut. Parameter adalah data atau nilai yang disematkan ketika fungsi tersebut dipanggil. Nantinya parameter akan diproses di dalam fungsi tersebut. Kita bisa melampirkan nilai konstan atau variabel untuk sebuah fungsi ketika ia dipanggil.
![20190430171455b43e928adbcdec91373dfcfc207afdf0.png](https://dicodingacademy.blob.core.windows.net/academies/20190430171455b43e928adbcdec91373dfcfc207afdf0.png)
Parameter dari sebuah fungsi terdiri dari nama dan tipe dari parameter itu sendiri. Ia digunakan untuk menentukan nilai atau variabel apa yang dapat dilampirkan. Setiap parameter dipisahkan oleh tanda (,). Catatan: setiap parameter bersifat read-only, sehingga kita hanya diijinkan untuk menggunakan nilainya untuk diproduksi.
Function return type
Terakhir adalah return type. Setiap fungsi yang kita deklarasi sejatinya akan selalu mengembalikan dan nilai yang akan dikembalikan bisa kita gunakan untuk keperluan lain. Misalnya untuk dijadikan sebagai argumen untuk fungsi lainnya.
![2019043017160751f628389eaa04299e99659795ebbe35.png](https://dicodingacademy.blob.core.windows.net/academies/2019043017160751f628389eaa04299e99659795ebbe35.png)
Lalu apakah tipe ini harus ditentukan setiap deklarasi sebuah fungsi? Tentu tidak. Jika kita tidak menentukan return type, secara implisit fungsi tersebut akan mengembalikan nilai dengan tipe Unit, yaitu return type yang tidak mengembalikan nilai signifikan.
Function Body
Setelah function header, selanjutnya adalah function body, yang ditandai dengan curly braces. Di dalamnya kita akan menempatkan sebuah logika kode baik itu sebuah expression atau statement. Seperti yang dijelaskan pada modul pengenalan, jika kita menetapkan sebuah fungsi dapat mengembalikan nilai, maka kita wajib menambah sebuah baris kode yang diawali dengan kata kunci return yang diikuti oleh expression untuk menetapkan nilai yang akan dikembalikan.
Sebaliknya, jika kita tidak ingin mengembalikan nilai, kita tidak perlu menambahkannya seperti yang disebutkan di atas.
![20190430171747fc65feecd760653ec8eea71f64108975.png](https://dicodingacademy.blob.core.windows.net/academies/20190430171747fc65feecd760653ec8eea71f64108975.png)
Setiap fungsi yang kita deklarasikan, memiliki ruang lingkup tersendiri. Contohnya saat kita mendeklarasi sebuah variabel di dalamnya, variabel tersebut akan menjadi variabel lokal untuk fungsi itu sendiri. Dengan demikian, variabel tersebut tidak dapat diakses dari fungsi lainnya meskipun berada di dalam satu kelas yang sama