Mi sono chiesto questo. Cosa intendiamo esattamente per design e verifica.
Devo semplicemente applicare TDD per assicurarmi che il mio codice sia SOLIDO e non verificare se il suo comportamento esterno è corretto?
Devo usare BDD per verificare che il comportamento sia corretto?
Il punto in cui mi confondo riguarda anche il codice TDD Katas, per me sembravano più sulla verifica che sul design; non dovrebbero essere chiamati BDD Katas invece di TDD Katas?
Ritengo che, ad esempio, lo zio Bob bowling Kata conduca alla fine ad un design interno semplice e piacevole, ma ho sentito che la maggior parte del processo era centrata più sulla verifica che sul design. Il design sembrava essere un effetto collaterale di testare il comportamento esterno in modo incrementale. Non mi sentivo così tanto da concentrare la maggior parte dei nostri sforzi sul design, ma più sulla verifica. Mentre normalmente ci viene detto il contrario, che in TDD, la verifica è un effetto collaterale, il design è lo scopo principale.
Quindi la mia domanda è: cosa dovrei concentrarmi esattamente su quando faccio TDD: SOLID, usabilità dell'API esterna o qualcos'altro?
E come posso farlo senza essere concentrato sulla verifica?
A cosa concentrate le vostre energie quando praticate il TDD?