292 akhrin

Refactoring 027 - How to Remove Getters

by Maximiliano Contieri7m2025/04/20
Read on Terminal Reader

Aad u dheer; In la akhriyo

Shuruudaha dhismaha iyo dhismaha dhismaha iyo dhismaha dhismaha iyo dhismaha dhismaha iyo dhismaha dhismaha, dhismaha dhismaha iyo dhismaha dhismaha iyo dhismaha dhismaha, dhismaha dhismaha dhismaha, dhismaha dhismaha dhismaha, dhismaha dhismaha dhismaha, dhismaha dhismaha dhismaha, dhismaha dhismaha dhismaha, dhismaha dhismaha dhismaha dhismaha.
featured image - Refactoring 027 - How to Remove Getters
Maximiliano Contieri HackerNoon profile picture

Shuruudaha dhismaha dhismaha dhismaha dhismaha

Haku

TL;DR: Waqtigaan ama ku yaalaa getters by methods-rich in behavior that perform operations instead of exposing internal state.

Haku

TL;DR: Waqtigaan ama ku yaalaa getters by methods-rich in behavior that perform operations instead of exposing internal state.

Qalabka Qalabka

    Haku
  • Qalabka Anemic
  • Haku
  • Qalabka ah
  • Haku
  • Qalabka Qalabka
  • Haku
  • mutant oo ah
  • Haku
  • Dhammaan Dhammaan Demeter
  • Haku
  • Qalabka Information
  • Haku
  • Qalabka Internal
  • Haku
  • Qalabka Primitive
  • Haku

Sida loo isticmaali karaa codka

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xiv

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-i-xqz3evd

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xiii

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xiv

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxix

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xiv

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xiii

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-i-xqz3evd

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxv

Haku

    Haku
  1. Shuruudaha dhismaha waaweyn ee shuruudaha.
  2. Haku
  3. Search all codes in codebase
  4. Haku
  5. Shuruudaha waxaa loo isticmaali karaa in la isticmaali karaa goobka.
  6. Haku
  7. Shuruudaha dhismaha iyo dhismaha iyo dhismaha iyo dhismaha iyo dhismaha
  8. Haku
  9. Nidaamka codka si loo isticmaali karaa midabada cusub
  10. Haku

Xubin Code

Xafiiska

public class Invoice {
    private List<LineItem> items;
    private Customer customer;
    private LocalDate dueDate;
    
    public Invoice(Customer customer, LocalDate dueDate) {
        this.customer = customer;
        this.dueDate = dueDate;
        this.items = new ArrayList<>();
    }
    
    public void addItem(LineItem item) {
        // This is the right way 
        // to manipulate the internal consistency
        // adding assertions and access control if necessary
        items.add(item);
    }
    
    public List<LineItem> getItems() {
        // You are exposing your internal implementation
        // In some languages, you also open a backdoor to
        // manipulate your own collection unless you return
        // a copy
        return items;
    }
    
    public Customer getCustomer() {
        // You expose your accidental implementation
        return customer;
    }
    
    public LocalDate getDueDate() {
        // You expose your accidental implementation
        return dueDate;
    }
}
 
Invoice invoice = new Invoice(customer, dueDate);
// Calculate the total violating encapsulation principle
double total = 0;
for (LineItem item : invoice.getItems()) {
    total += item.getPrice() * item.getQuantity();
}

// Check if the invoice is overdue
boolean isOverdue = LocalDate.now().isAfter(invoice.getDueDate());

// Print the customer information
System.out.println("Customer: " + invoice.getCustomer().getName());

Ka dibna

public class Invoice {
    private List<LineItem> items;
    private Customer customer;
    private LocalDate dueDate;
    
    public Invoice(Customer customer, LocalDate dueDate) {
        this.customer = customer;
        this.dueDate = dueDate;
        this.items = new ArrayList<>();
    }
    
    public void addItem(LineItem item) {
        items.add(item);
    }
    
    // Step 3: Move behavior that uses the getter into the object
    public double calculateTotal() {
        // Step 4: Create intention-revealing methods
        double total = 0;
        for (LineItem item : items) {
            total += item.price() * item.quantity();
        }
        return total;
    }
    
    public boolean isOverdue(date) {
        // Step 4: Create intention-revealing methods
        // Notice you inject the time control source
        // Removing the getter and breaking the coupling
        return date.isAfter(dueDate);
    }
    
    public String customerInformation() {
        // Step 4: Create intention-revealing methods
        // You no longer print with side effects 
        // And coupling to a global console
        return "Customer: " + customer.name();        
    }
    
    // For collections, return an unmodifiable view if needed
    // Only expose internal collaborators if the name 
    // is an actual behavior
    public List<LineItem> items() {
        return Collections.unmodifiableList(items);
    }
    
    // Only if required by frameworks 
    // or telling the customer is an actual responsibility
    // The caller should not assume the Invoice is actually
    // holding it
    public String customerName() {
        return customer.name();
    }
    
    // You might not need to return the dueDate
    // Challenge yourself if you essentially need to expose it
    // public LocalDate dueDate() {
    //     return dueDate;
    // }
}

// Client code (Step 5: Update client code)
Invoice invoice = new Invoice(customer, dueDate);
double total = invoice.calculateTotal();
boolean isOverdue = invoice.isOverdue(date);
System.out.println(invoice.customerInformation());

Haku

    Haku
  • [x] Qalabka Semi-Auto
  • Haku

Qalabka ️

Refactoring waa mid ka mid ah si ay u isticmaali karaa, laakiin waxaa loo isticmaali karaa si ay u isticmaali karaa.


Waxaad u baahan tahay in ay u baahan tahay in ay u isticmaali karaa go'aanka iyo in ay u isticmaali karaa go'aanka cusub ee go'aanka.


Dhabka ugu badan waxaa laga yaabaa in aad u xusuusato in aad u xusuusato in aad u xusuusato in aad u xusuusato in aad u xusuusato in aad u xusuusato in aad u xusuusato.


Waxaad ku xigtay in ay ku xigtay in ay ka mid ah wax soo saarka oo ka mid ah wax soo saarka ah oo ka mid ah wax soo saarka.


Waayo, waxaa loo isticmaali karaa in ay ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah mid ah mid


Sida loo yaabaa, sidoo kale u baahan tahay in ay ka mid ah dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha dhismaha.

Sidaas ka mid ah codsiga ugu fiican?

Qalabka ugu fiican waa in ay ku saabsanHaku-Haku-HakuSida loo yaabaa, waxaa loo isticmaali karaa in ay ka mid ah macluumaadka macluumaadka ah.


Soo dejisan waxay ku dhigi karaa logic-ka ku saabsan data-ka-object-ka ku yaalaa, si ay u raaxeyn karaa dubbing-ka. Waxay ku dhigi karaa si ay u dhigi karaa si ay u dhigi karaa representation-ka iyo in ay ku yaalaa codka client-ka.


Qalabka waxaa loo yaqaan ReductionQalabkaSida loo yaqaan 'Client' waa in aad u baahan tahay in ay u baahan tahay si ay u baahan tahay in ay u baahan tahay in ay u baahan tahay in ay u baahan yahay.


Markaas ka mid ah dhismaha dhismaha Demeter oo ka mid ah dhismaha dhismaha dhismaha.


Ka dib markiiQalabka Qalabka Qalabka QalabkaSida loo yaqaan "Solution" waxaa loo yaqaan "Solutions" (Solutions) waxaa loo yaqaan "Solutions" (Solutions) iyo "Solutions" (Solutions) waxaa loo yaqaan "Solutions" (Solutions).

Sida loo isticmaali karaa in ay u isticmaali karaa? ️

Shuruudaha Xirfadeed oo ku yaalaaHakuWaayo, waxaa laga yaabaa in ay ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah.


Haddii loo yaqaan 'objects' waa in la soo bandhigiisa in la soo bandhigiisa, laakiin waxaa loo yaqaan 'objects' waa in la soo bandhigiisa in la soo bandhigiisa.


Sida loo yaabaa, waxaad ka soo xiriir in aad ka soo xiriir in aad ka soo xiriir in aad ka soo xiriir in aad ka soo xiriir in aad ka soo xiriir in aad ka soo xiriir in aad ka soo xiriir in aad ka soo xiriir in aad ka soo xiriir in aad ka soo xiriir in aad ka soo xiriir.


Ma rabtaa in aad u dhismaha ugu fiican ee dhismaha domain by modeling your objects to perform operations rather than exposing the data.

Sida loo yaqaan "One-to-One" waa in la soo bandhigiisa mid ka mid ah warshadaha real iyo model-ka ah, sidaas ka soo bandhigiisa codka ah waa in la soo bandhigiisa oo ku yaalaa in ay u soo bandhigiisa sida ay u soo bandhigiisa.


Qalabka waxaa laga yaabaa in laHakuQalabka dhismaha iyo dhismaha iyo dhismaha iyo dhismaha iyo dhismaha.

Haku ️

Shuruudaha iyo librarka waxay ka mid ah ka mid ah mid ka mid ah seryalization / deserialization.


Codebases ka mid ah codebacks waxaa laga yaabaa isticmaalka getter ah oo ah waa caawin ah si ay u adeegsanay oo dhan.


Qalabka dhismaha waxaa laga yaabaa in ka mid ah wax soo saarka ah oo ka mid ah wax soo saarka ah.

Refactor iyo AI

Haku

Shuruudaha ugu caawinayo: 1. Isticmaanka getters oo loo yaqaan 'object state' internal.2. Find all getter uses in the codebase.3. Move behavior that uses the getter into the object itself.4. Create intention-revealing methods that perform operations.5. Update your code to use the new methods.5.

Haku

Shuruudaha ugu caawinayo: 1. Isticmaanka getters oo loo yaqaan 'object state' internal.2. Find all getter uses in the codebase.3. Move behavior that uses the getter into the object itself.4. Create intention-revealing methods that perform operations.5. Update your code to use the new methods.5.

HakuMarka aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan yahay.
Marka aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan yahay.Haddii aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay in aad u baahan tahay.Haku

Haddii ka mid ah warqad

Haddii ka mid ah warqad

Haku

Sida loo yaqaan "Special Instructions"

Sida loo yaqaan "Special Instructions"

Haku: ChatGPTHaku

Haku

Haku

Haku

Marka: ClaudeHaku

Haku

Haku

Haku

Haku

Qiimeeyaasha PerplexityQalabka

Qalabka

Haku

Qalabka

Qalabka

Qalabka CopilotQalabka

Qalabka

Qalabka

Qalabka

Qalabka GeminiQEEBE

QEEBE

QEEBE

QEEBE

Shirkadda DeepSeekHaku

Haku

Haku

Haku

Qalabka QalabkaHaku

Qalabka

Qalabka

Qalabka

Qalabka

Haku GrogHaku

Haku

Haku

Haku

Haku

HakuQEEBEHakuQEEBEHakuQEEBE

QEEBE

QEEBE

QEEBE

Haku ️

    Haku
  • Qalabka Encapsulation
  • Haku

Qalabka

    Haku
  • [x] Qalabka
  • Haku

Qalabka Refactoring

Sida loo yaabaa

Qalabka

XafiiskaHakuHakuQEEBE


This article is part of the Refactoring Series.


Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks