Mengapa saya suka antarmuka Go

Belum lama berselang, saya mulai belajar Go dan menemukan bahwa di sana, banyak hal yang tampaknya sudah dikenal bekerja secara berbeda. Antarmuka ada di antara mereka. Sebelumnya, saya tidak memikirkan fakta bahwa mengetik bebek bisa dalam bahasa yang diketik secara statis. Sekarang bagi saya ini masuk akal dan masuk akal. Di sini saya akan menjelaskan satu alasan yang sangat menentukan sikap saya terhadap antarmuka di Go.

Go adalah bahasa yang cukup solid


Maaf untuk permainan kata-kata, tidak bisa menolak

Pada topik "Is Go an Oriented Language?" banyak artikel ditulis, termasuk di Habré. Tetapi tidak terlalu sering, ketika topik ini diangkat, mereka berbicara tentang prinsip-prinsip SOLID dan umumnya jarang tentang yang terakhir (dalam urutan, tetapi tidak penting) dari mereka - prinsip inversi ketergantungan (DIP). Jika dilupakan, maka biasanya dirumuskan sebagai berikut:
Abstraksi tidak harus bergantung pada detail. Detail harus bergantung pada abstraksi.
Mungkin alat paling ampuh yang ditemukan untuk menerapkan prinsip ini - antarmuka. Jika Anda ingin mengklarifikasi kebalikan dari dependensi untuk Anda sendiri, maka inilah artikel yang bagus . Omong-omong, gambarnya dari sana.



Misalkan Foo dan Bar berada dalam modul yang berbeda: F dan B. Tetapi kemudian, untuk mengimplementasikan antarmuka, kita harus mengimpor antarmuka IBar dari F ke B, dan kemudian mentransfer implementasinya kembali ke F. Dalam beberapa hal, ketergantungan siklik antar paket (bukan dalam hal perilaku, tetapi dalam hal impor). Di sinilah implementasi implisit dari antarmuka datang ke bantuan kami. Kita dapat mengimpor Bar dari B ke F, dan Go akan mencari tahu sendiri apakah itu mengimplementasikan IBar atau tidak. Dalam hal ini, secara spesifik menentukan antarmuka selama implementasi menjadi berlebihan.

Beberapa kata pada akhirnya


Interfaces in Go adalah alat yang ampuh, termasuk untuk inversi ketergantungan. Tetapi Anda tidak harus membuatnya untuk semuanya, jadi setiap kali tanyakan pada diri sendiri - mengapa Anda melakukan ini.

Apa yang Anda suka / tidak suka tentang sistem tipe Go?

Source: https://habr.com/ru/post/id451240/


All Articles