Skip to content

Abstraction

Girish abstraction smell

Semua smell di dalam grup ini berkaitan dengan kesalahan dalam mendesain abstraksi.

Prinsip abstraction

Girish abstraction principles

Menurut Girish Suryanarayana dkk, terdapat 5 prinsip abstraction yaitu:

  • Provide a crisp conceptual boundary and an identity - Adanya boundary yang jelas.
  • Map domain entities - Pemilihan kata yang tepat terhadap domain.
  • Ensure coherence and completeness - Berikan detail kelas yang selengkap-lengkapnya dan koheren (termasuk pasangan/lawan kata).
  • Assign single and meaningful responsibility - Hanya memegang 1 tanggungjawab penting dalam 1 class.
  • Avoid duplication - Hindari duplikat nama atau implementasi dalam abstraksi.

Berdasarkan pada pengamatan abstraction smell, terdapat pelanggaran prinsip abstraction antara lain:

Abstraction smellPelanggaran prinsip abstractionPenyebabMartin Fowler smells
Missing AbstractionProvide a crisp conceptual boundary and a unique identityPemakaian komponen-komponen data/string tanpa membuatkan object classPrimitive Obsession, Data Clumps
Imperative AbstractionMap domain entitiesProses dijadikan class, pemikiran Procedural dalam Object-oriented programmingLazy Class (Potentially)
Incomplete AbstractionEnsure coherence and completenessTidak ada pasang/lawan kata domain-
Multifaceted AbstractionAssign single and meaningful responsibilitySatu class memegang > 1 tanggungjawabDivergent Changes + Large Class
Unnecessary AbstractionAssign single and meaningful responsibilityPembuatan class yang seharusnya tidak diperlukan (alias overengineering)Speculative Generalities
Unutilized AbstractionAssign single and meaningful responsibilityAda class yang tidak terpakai sama sekaliDead Code
Duplicate AbstractionAvoid duplicationAda method/implementasi yang sama antar classAlternative Classes with Different Interfaces

Repository ini hanyalah rangkuman dari buku Suryanarayana et al. dengan sedikit tambahan informasi lain. Diharapkan mahasiswa juga membaca sumber aslinya pada bab 3 halaman 21 - 60.

Created by Saugi