2013-06-15 11 views
12

Podano naprawdę interesującą konferencję na temat D-Specific Design Patterns, aw społeczności D niektórzy sądzili, że może to być punkt wyjścia dla book zajmującej się skutecznymi technikami kodowania. Inni twierdzą, że było za wcześnie, ponieważ niewielu ludzi ma dużo doświadczenia, autor (autorzy) takiej książki będą mieli pewne stronnicze/osobiste uznanie na temat skuteczności. SO jest bardziej interaktywnym medium (z jego ograniczeniami). Tak więc, czekając na "Effective D", będzie świetnie, jeśli będziemy mogli podzielić się niektórymi (zabijaniem) poradami/technikami/wzorcami, aby kod D wyglądał ładniej. Myślę, że to będzie bardziej przejrzyste, jeśli odpowiedź:Efektywny D: najlepsze praktyki i wzorce projektowe

  • wystawiać unikalną technikę
  • jest zasadniczo kawałek skomentował kodu
  • (jeśli jest zbyt duży) jest po prostu link do kodu (Istota public ...)
+1

Prawdopodobnie powinno być wykonane jako „Wiki” kwestii zamiast. –

+0

Czy istnieje sposób, aby "przekonwertować" pytanie? – matovitch

+0

Może ktoś z wystarczająco wysokim przedstawicielem może to zrobić. –

Odpowiedz

5

mam kilka postów D Tip na moim blog (123).

Oto jeden: Testing With TypeTuple


Podczas testowania funkcji, to zwykle dobry pomysł, aby przetestować go z wielu różnych komponentów. Aby to zrobić, możesz z łatwością użyć pętli for przez tablicę wartości wejściowych, ale co, jeśli twoje wejście jest typem, jak to często jest z kodem szablonu?

D Język programowania pozwala na iteracyjne nad TypeTuple, więc wszystko co musisz zrobić, to zadeklarować krotki wszystkich typów, które chcesz przetestować, i iteracyjne nad nimi w zwykły sposób:

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

Można się zastanawiać, do czego to się kompiluje. W końcu treść pętli zmienia się wraz z T, więc wygenerowany kod również musi się różnić w każdej iteracji. Jak radzi sobie z tym kompilator?

Odpowiedź jest taka, że ​​pętla jest całkowicie rozwinięta. Powyższy kod jest dosłownie taki sam jak:

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

Z tego powodu warto mieć oko na miarę Twoich TypeTuples, aby uniknąć kodu uwędzić.

+0

Świetne wskazówki! Zwłaszcza ta dotycząca zainteresowania wykorzystaniem zakresów w kodzie ogólnym na przykładzie subtelnego typu łańcucha. – matovitch

Powiązane problemy