Materi tentang composition atau inheritance biasanya sudah diajarkan sejak kuliah. Tapi seringkali kita hanya sekedar tahu tapi masih bingung tentang best practice-nya gimana. Artikel tentang "dahulukan composition dibandingkan inheritance" sudah sering didiskusikan seperti pada buku-buku tentang design patterns atau tulisan-tulisan dari Martin Fowler, Joshua…
Setelah laptop kantor gw mati total untuk kedua kalinya, laptop gw diganti. Gw mulai mencoba trial & error terhadap beberapa OS. Yang jadi pertimbangan gw adalah: Support Wayland atau ada fitur gesture tanpa harus di-install manual karena gw udah terbiasa dengan fitur ini di Windows 10 dan bikin gw lebih produktif buat pindah-pindah workspace; Bisa custom…
Pada Java 8 terdapat Functional Interface yang dapat digunakan sebagai Lambda. Namun mayoritas Functional Interface tersebut by default tidak melakukan throws Exception. Ini cukup ribet kalau kita memanggil method yang throws checked exception pada scope Lambda pada umumnya. Contohnya kita ingin melakukan looping String yang berisi path sebuah text menggunakan…
Sebenarnya contoh penggunaannya udah pernah gw bikin pada post tentang Single Responsibility dan Open-Close Principle, nah sekarang penjelasannya. Prinsip yang satu ini mungkin udah pada familiar. Terutama bagi yang menggunakan Spring framework pasti sudah tidak asing lagi. Prinsip ini merupakan implementasi dari Inversion of Control. Dengan Dependency Injection…
Interface Segregation adalah memecah sebuah abstrak yang terlalu besar menjadi beberapa abstrak yang lebih spesifik. Terkadang pada sebuah code yang dibutuhkan hanya beberapa method saja dari interface tersebut, sisanya tidak dibutuhkan dan beberapa diantaranya memiliki kohesi yang rendah, tidak saling terkait. Selain itu, sebuah abstraksi terlalu abstrak jika…
Prinsip ini berbicara tentang subclass yang kuat. Prinsip ini pertama kali dikemukakan oleh Barbara Liskov. Jika sebuah abstraksi memiliki behavior, maka seluruh turunannya wajib memiliki behavior tersebut secara natural. Melakukan sebuah throwable secara default pada sebuah method milik turunan yang ternyata tidak memiliki behavior seperti abstrak melanggar…
Secara definisi: Software entities should be open for extension, but closed for modification. Robert C. Martin Disini bisnis logic dibungkus menjadi entitas yang bisa di-extend sebanyak apapun tanpa banyak perubahan di entity utama. Disini benefit dari abstraksi sangat terasa. Open-Close Principle ini bisa diterapkan menggunakan Strategy Pattern dan Factory…
Secara definisi: Single-responsibility principle (SRP) is a computer-programming principle that states that every module, class or function in a computer program should have responsibility over a single part of that program's functionality, which it should encapsulate. Robert C. Martin Kalau di-bahasa-indonesia-kan kurang lebih seperti ini: Single Responsibility…
Sebenarnya ini catatan-catatan kecil gw aja yang selama ini gw simpan. Gw emang suka nyari-nyari Best Practice gitu di internet. Biasanya sih gw simpan di notepad aja, tapi kali ini gw coba share kali aja berguna. Beberapa catatan diantaranya gw pelajari dari Intellij Inspector dan lainnya berasal dari pencarian di internet dan blog dari Java Expert. Sebenarnya…
Beberapa tahun belakangan ini, gw selalu memakai software Mirillis Splash untuk menonton video secara HD. Tapi karena berbayar, gw masih make yang bajakan 🤭. Untungnya sekarang software ini jadi freeware, jadi ga perlu beli atau repot-repot pakai keygen lagi untuk menggunakannya. Sebenarnya banyak sih software-software pemutar video lainnya yang lebih terkenal…