161 akhrin

Refactoring 029 - How to Replace NULL by Collection

by Maximiliano Contieri6m2025/06/02
Read on Terminal Reader

Aad u dheer; In la akhriyo

Qalabka dhismaha iyo dhismaha iyo dhismaha iyo dhismaha iyo dhismaha.
featured image - Refactoring 029 - How to Replace NULL by Collection
Maximiliano Contieri HackerNoon profile picture

Shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha ugu horeysay ee shuruudaha.

TL;DR: Isticmaalka qiyaastii ah oo ka mid ah qiyaastii ah oo ka mid ah qiyaastii ah oo ka mid ah qiyaastii ah oo ka mid ah qiyaastii ah oo ka mid ah qiyaastii ah oo ka mid ah qiyaastii.

TL;DR: Isticmaalka qiyaastii ah oo ka mid ah qiyaastii ah oo ka mid ah qiyaastii ah oo ka mid ah qiyaastii ah oo ka mid ah qiyaastii ah oo ka mid ah qiyaastii ah oo ka mid ah qiyaastii.

Qalabka Qalabka

  • 0 0 0 0 0 0 0 0
  • Qalabka dhismaha iyo ifs
  • Qalabka dhismaha
  • Qalabka Optional
  • codka codka codka
  • Polymorphism waxaa laga yaabaa

Haku

  1. Qalabka dhismaha iyo dhismaha iyo dhismaha iyo dhismaha.
  2. Shuruudaha dhismaha ah ee dhismaha iyo dhismaha iyo dhismaha
  3. Waayo, sidoo kale waxaa laga yaabaa in la soo xiriir in la soo xiriir oo ka mid ah macluumaadka.
  4. Shuruudaha dhismaha si ay u shaqeeyaan tareenada ah in ay ka mid ah gaarka ah

Xubin Code

Xafiiska

public class ShoppingCart {
    private List<Item> items = new ArrayList<>();
    private Coupon coupon = null;
    
    public void addItem(Item item) {
        this.items.add(item);
    }
    
    public void redeemCoupon(Coupon coupon) {
        this.coupon = coupon;
    }
    
    public double total() {
        double total = 0;
        
        for (Item item : this.items) {
            total += item.getPrice();
        }
        
        // This a polluted IF and null check
        if (this.coupon != null) {
            total -= this.coupon.getDiscount();
        }
        
        return total;
    }
    
    public boolean hasUnsavedChanges() {
        // Explicit null check
        return !this.items.isEmpty() || this.coupon != null;
    }
    
    public boolean hasCoupon() {        
        return this.coupon != null;
    }
}
public class ShoppingCart {
    private final List<Item> items = new ArrayList<>();
  
    // This version uses Optionals
    // Not all programming languages support this feature
    private Optional<Coupon> coupon = Optional.empty();

    public void addItem(Item item) {
        items.add(item);
    }

    public void redeemCoupon(Coupon coupon) {
        // You need to understand how optionals work
        this.coupon = Optional.ofNullable(coupon);
    }
    
    public boolean hasUnsavedChanges() {
        return !items.isEmpty() || !coupon.isPresent();
    }

    public boolean hasCoupon() {
        return coupon.isPresent();
    }
}

Ka dibna

public class ShoppingCart {
  private List<Item> items = new ArrayList<>();
    
  // 1. Identify nullable optional attributes
  // that could be collections
  // 2. Replace single nullable objects with empty collections
  private List<Coupon> coupons = new ArrayList<>();
    
  public void addItem(Item item) {
      this.items.add(item);
  }
    
  // Step 4: Work with collection
  // instead of single nullable object
  public void redeemCoupon(Coupon coupon) {
      this.coupons.add(coupon);
  }
    
  // Step 4: Simplified logic without null checks
  public double total() {
    double total = 0;
      
    for (Item item : this.items) {
        total += item.getPrice();
    }
      
    // 3. Remove all null checks 
    // related to these optional attributes        
    for (Coupon coupon : this.coupons) {
        total -= coupon.getDiscount();
    }
      
    return total;
  }
    
  // Consistent behavior with empty collections
  public boolean hasUnsavedChanges() {
    // 4. Update methods to work with collections
    // instead of single objects 
    return !this.items.isEmpty() || !this.coupons.isEmpty();
  }
    
  // 3. Remove all null checks 
  // related to these optional attributes
  // Collection-based check instead of null check
  public boolean hasCoupon() {
    return !this.coupons.isEmpty();
  }
}

Haku

  • [x] Qalabka Semi-Auto

Qalabka ️

Refactoring waa 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.


Waxaad u baahan tahay in ay ka mid ah codka 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.


Refactoring waxay ku yaalaa xanuunka xanuunka xanuunka xanuunka xanuunka xanuunka xanuunka.


Waxaad ka heli karaa in ay ka mid ka mid ah wax soo saarka iyo wax soo saarka ay ka mid ah wax soo saarka.

Sidaas ka mid ah codsiga ugu fiican?

CODE CODE CODE CODE CODE0 0 0 0 0 0 0 0 0Waxaa la heli karaa warshadaha warshadaha.


Shuruudaha caadiga ah iyo shuruudaha caadiga ah waxaa loo isticmaali karaa polymorphically, sidaas aad u isticmaali karaa.


Code waxaa laga yaabaa in ay ku yaalaa in ay ka mid ah wax soo saarka (ka mid ka mid ka mid ah wax soo saarka) iyo si ay u hesho la mid ah wax soo saarka.


Shuruudaha 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 ah mid ka mid ah mid ka mid ah mid ka mid ah mid ka mid ah.


Shuruudaha waxaa laga yaabaa in ay ku yaalaa in ay ku yaalaa in ay ku yaalaa in ay ku yaalaa in ay ku yaalaa in ay ku yaalaa in ay ku yaalaa in ay ku yaalaa in ay ku yaalaa in ay ku yaalaa in ay ku yaalaa in ay ku yaalaa in ay ku yaalaa in ay ku yaalaa.


Shuruudaha dhismaha iyo shuruudaha dhismahapolymorphic.

Sida loo isticmaali karaa in ay u isticmaali karaa? ️

Markaas 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 ah mid ka mid ah mid ah mid ah mid ka mid ah mid ah mid ka mid ah mid ah.


Sida loo yaqaan 'Collections' (Collectibles) iyo 'Empty Collectibles' (Collectibles) waxaa loo yaqaan 'Collectibles' (Collectibles) iyo 'Null' (Collectibles) waxaa loo yaqaan 'Collectibles' (Collectibles) iyo 'Null' (Collectibles).


Null waxay ku yaalaa in ay ku yaalaa, oo waxaa laga yaabaa in ay ka dhigi karaa.Haku.


Sida loo yaqaan "one-to-one" waa mid ka mid ah mid ka mid ah mid ah 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 ka mid ah 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 ka mid ah 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 ka mid ah mid ah mid ka mid ah.Haku.


Sida loo yaqaan 'Nulls' waa in la soo saarka, waxaa loo yaqaan 'Nulls'.Qalabka.

Haku ️

Waxaa jira 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 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.


Waxaad 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.

Refactor iyo AI

Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka

Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka Qalabka

Without Proper Instructions

With Specific Instructions

ChatGPT

ChatGPT

Claude

Claude

Perplexity

Perplexity

Copilot

Copilot

Gemini

Gemini

DeepSeek

DeepSeek

Meta AI

Meta AI

Grok

Grok

Qwen

Qwen

Haku

Haku

Haku

Haku

Qalabka

Qalabka

Qalabka

Qalabka

QEEBE

QEEBE

Haku

Haku

Qalabka

Qalabka

Haku

Haku

QEEBE

QEEBE

Haku ️

  • 0 0 0

Qalabka

  • [x] Qalabka

Sida loo yaabaa

Qalabka

XafiiskaHaku K.HakuQEEBE


This article is part of the Refactoring Series.


L O A D I N G
. . . comments & more!

About Author

Maximiliano Contieri HackerNoon profile picture
Maximiliano Contieri@mcsee
I’m a sr software engineer specialized in Clean Code, Design and TDD Book "Clean Code Cookbook" 500+ articles written

HANG TAGS

MAQAALKAN AYAA LAGU SOO BANDHIGAY...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks