1) singletonu se zcela vyhýbám, považuji ho za anti-pattern
2) DI
3) ano, občas
4) ano
5) if i switch (

)
6) v C# nepíšu
Většinou dělám v PHP a na osobních projektech mám:
+ kontrolu code-style definovaný v XML - jak je kód formátovaný (mezery/taby, docblocky, a spoustu dalšího)
+ statickou analýzu kódu - odhalí nepoužité nebo špatně použité proměnné, chybějící třídy, špatná volání metod atd.
+ testy
Toto vše si samozřejmě pouštím před pushem, jamile se to dostane do Gitu, spouští se CI, kde se tyto kroky provedou.. Většina věcí je v Docker kontejnerech.
Takhkle to dělám já na svých projektech, byl bych rád kdyby to tak měli i firmy pro které dělám, realita je hodně různá - někde ano, někde částečně a někde jsou stále 10 let pozadu, vystavují přes FTP a neštítí se modifikovat kód přímo na serveru.
Aktuálně firma pro kterou dělám má chuť tohle zlepšovat, ale u zhruba poloviny vývojářů mi přijde, že o to nemají zájem a dělají si to po svém bez nějaké vize zlepšení procesů a kvality. Osobně myslím, že by to firma měla nadiktovat a vývojáři by měli mít možnost to rozumně ovlivňovat. Tedy pokud je vše rozumně zadokumentované/popsané, jinak to může být chaos.