По большей части я соглашаюсь, что TDD действительно обеспечивает своего рода средство проектирования. Самая важная часть которого мне является способом, которым она создает в способности внести больше изменений (Вы знаете, когда у Вас есть та флэш-память момента понимания, где можно добавить функциональность путем удаления кода) со значительно сниженным риском.
Однако часть более алгоритмической работы я заключил контракт на, в последнее время пострадал немного под TDD без осторожного баланса мысли дизайна. Оператор выше о более безопасном рефакторинге был все еще большим преимуществом, но для некоторых алгоритмов TDD (хотя все еще полезен) не достаточный для получения Вас к идеальному решению. Возьмите сортировку в качестве простого примера. TDD мог легко привести Вас к субоптимальному алгоритму (N^2) (и ставриды того, чтобы проходить тесты, которые позволяют Вам осуществлять рефакторинг к быстрой сортировке) как пузырьковая сортировка. TDD является инструментом, очень хороший инструмент, но как много вещей должен использоваться соответственно для контекста решаемой проблемы.
Я предпочитаю использовать MY_MACRO()
, с круглыми скобками, потому что мне кажется, что я вызываю функцию. В противном случае это выглядит так, будто я вызываю константу:
MY_MACRO();
против
MY_MACRO;
То есть, если определение используется для вызова кода, а не просто для простого значения константы.