2013-06-15 13 views
12

Una conferenza davvero interessante è stata data su D-Specific Design Patterns e nella comunità D, alcune persone hanno pensato che potesse essere un punto di partenza per uno book che trattava di tecniche di codifica efficaci. Altri sostengono che era troppo presto perché non molte persone hanno un sacco di esperienza nello , l'autore (s) di un tale libro avrà qualche pregiudizio/apprezzamento personale sulla nozione di efficacia. SO è un media più interattivo (con i suoi limiti). Quindi, aspettando l'uscita di "Effective D", sarà fantastico poter condividere alcuni (uccidere) consigli/tecniche/schemi per rendere il codice D più bello. Penso che sarà più chiaro se una risposta:Effective D: best practice e pattern di progettazione

  • esporre una tecnica unica
  • è essenzialmente un pezzo di commentato codice
  • (se è troppo grande) è solo un link al codice (Gist pubblico ...)
+1

Probabilmente dovrebbe essere fatto come domanda "comunità wiki", invece. –

+0

C'è un modo per "convertire" la domanda? – matovitch

+0

Forse qualcuno con un rappresentante abbastanza alto può farlo. –

risposta

5

ho un paio di messaggi D Tip sul mio blog (123).

Ecco uno: Testing With TypeTuple


Durante il test di una funzione, di solito è una buona idea per testare con una gamma di parametri diversi. Per fare ciò, puoi facilmente usare un ciclo for su un array di valori di input, ma cosa succede se il tuo input è un tipo, come spesso accade con il codice del template?

Il D linguaggio di programmazione consente di iterazioni su una TypeTuple, quindi tutto quello che dovete fare è dichiarare una tupla di tutti i tipi che si desidera testare, e iterare su di loro in modo normale:

import std.typetuple; 
alias TypeTuple!(int, long, double) Types; 
foreach (T; Types) 
    test!T(); 

Ci si potrebbe chiedere che cosa questo compili. Dopo tutto, il corpo del loop varia con T, quindi il codice generato deve anche variare a ogni iterazione. Come fa il compilatore a gestirlo?

La risposta è che il ciclo è completamente srotolato. Il codice di cui sopra è letteralmente la stessa:

test!int(); 
test!long(); 
test!double(); 

Per questo motivo, si potrebbe desiderare di tenere d'occhio le dimensioni dei TypeTuples, per evitare code troppo grosso.

+0

Ottimi consigli! Soprattutto quello sull'interesse di usare gli intervalli nel codice generico attraverso l'esempio del tipo di stringa sottile. – matovitch