Nei negozi online ci sono aree con regole complicate. Ad esempio
- è un prodotto visibile nel catalogo prodotti
- è un prodotto esaurito
- qual è il prezzo per il prodotto (sconti, promozioni, ...)
È una buona idea avere un'API di spiegazione aggiuntiva per ogni regola complicata?
Esempio: boolean isProductVisible()
ha un String explainIsProductVisible()
aggiuntivo?
Come facilitare la comprensione di queste regole?
Sfondo:
Ieri, in qualità di sviluppatore di software, ho avuto il problema che il mio prodotto di prova standard sul mio sistema di test locale era "esaurito" e avevo bisogno di questo prodotto per testare la pagina di conferma dell'ordine.
Quindi ho dovuto eseguire il debug della routine IsProductAvailable
per correggere i dati di test prima di poter eseguire l'originale
compito "testare la pagina di conferma dell'ordine".
Per scoprire perché il mio prodotto di test è stato esaurito, un messaggio di spiegazione sarebbe stato utile.
In una situazione simile nel motore di calcolo del prezzo ho già aggiunto messaggi di registro come questo
double calculateItemPriceForProduct(Product product, int quantity, Cart cart, ...)
{
double cumulatedPrice = 0;
...
if (quantity > 1) {
Price price = getScalePrice(product, quantity);
if (price != null) {
cumulatedPrice = price.getValue();
if (log.isDebugEnabled()) {
log.debug("calculateItemPriceForProduct("+
product.getCode()+
") using scalePrice " +
price.getCode() + " for quantity " +
quantity + ":" + price.getValue());
}
}
}
...
}
Come sviluppatore posso esaminare il registro del server e sperare di scoprire cosa è successo.
Se fossi un product manager sarebbe più comodo avere tooltip specifici dei ruoli nella pagina web che mostra la parte della spiegazione.
Ovviamente questi tooltip non sarebbero disponibili per i clienti ordinari, solo per sviluppatori e product manager.
Le mie domande:
- Esistono altri modi per semplificare la comprensione delle regole complicate?
- È una buona idea avere un'API di spiegazione aggiuntiva per ogni regola complicata?
- Una tale funzione ripaga il costo di sviluppo di questa funzione?