Я был в нескольких компаниях, где слишком много проектов было болью по-разному. Я еще не был нигде, где было бы слишком несколько проектов, хотя это, безусловно, возможно.
Думайте о проекте как о единице повторного использования, помимо прочего. Любой продукт будет нуждаться в Foo, но не в Bar, или наоборот? Если нет, объедините их вместе.
Мне нравится разделять разные слои (представление, бизнес-логика, доступ к данным), и приятно иметь общую, независимую от продукта служебную библиотеку, но во многих случаях об этом.
Да, и, конечно, держите тесты в другом проекте, отличном от вашего производственного кода:)