Domanda

Che cos'è un metodo "quotato su tabella"?

Come menzionato da Bill Gates nel secondo spot di Windows Vista alle 1:05 .

È stato utile?

Soluzione

  

I metodi basati su tabelle sono schemi che consentono di cercare informazioni in una tabella anziché utilizzare istruzioni logiche (ad esempio caso, se). In casi semplici, è più veloce e più facile usare le istruzioni logiche, ma man mano che la catena logica diventa più complessa, il codice guidato dalla tabella è più semplice della logica complicata, più facile da modificare e più efficiente.

Riferimento: McConnell, Steve. Codice completo, seconda edizione. Redmond (Washington): Microsoft, 2004. Stampa. Pagina 411, paragrafo 1.

Altri suggerimenti

Il video di riferimento fa leggere Bill Gates dal libro Code Complete di Steve McConnell. Jeff Atwood lo ha menzionato nel suo blog (i link di YouTube corrispondono).

Da codice completo, 2a edizione:

  

Un metodo guidato da una tabella è uno schema che consente di cercare informazioni in una tabella anziché utilizzare le istruzioni logiche ( if e case ) per capirle.

McConnell usa un array come sua "tabella" nei suoi esempi, ma penso che il concetto possa essere applicato a tabelle di database o qualsiasi altra cosa simile a una tabella.

Il concetto è davvero meglio spiegato con un esempio.

Supponiamo che tu gestisca un ristorante e abbia un numero diverso di posti per ciascun numero di tavolo.

La tua logica per ottenere il numero di posti per un determinato tavolo potrebbe assomigliare a

if table number == 1
    table has 4 seats
else if table number == 2
    table has 8 seats
. . .

quindi se hai 50 tavoli avresti 100 righe di codice solo per determinare il numero di posti.

Usando metodi basati su tabelle, potresti creare un array con l'indice che rappresenta il numero della tabella e il valore che rappresenta il numero di posti, quindi la tua logica sarebbe invece simile a

tables [] = {4, 8, 2, 4, ...}
table seats = tables[table number]

che è più semplice, più breve e più facile da mantenere.

Un metodo basato su tabella è abbastanza semplice. Utilizzare le strutture dati anziché le istruzioni if-then per guidare la logica del programma. Ad esempio, se stai elaborando due tipi di record (tv contro cavo) potresti farlo:

hash[tv] = process_tv_records
hash[cable] = process_cable_records

In alcune lingue, come Ruby o Perl, questa tecnica è semplice. In Java, è necessario utilizzare Reflection per trovare handle di metodo.

Se vuoi conoscere le tabelle delle decisioni, investiagetela struttura di test Fitnesse su http://fitnesse.org/ .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top