Из моего личного опыта могу сказать, что когда код написан хорошо, для него несложно писать unit тесты и на их написание уходит минимальное время.
Если код плохо написан, плохо спроектирован, то написание тестов становится серьезной проблемой, вызывает только разочарования и этим не хочется заниматься.
Далеко не все имеет смысл тестировать и бывают случаи, когда отсутствие тестов допустимо. Но в большом проекте, когда проект состоит из тысяч строк кода, отсутствие unit тестов подозрительно и могут указывать на серьезные проблемы в коде.
Очередной признак плохого кода - отсутствие свойств у класса. Опять же, это только признак, а не гарантия плохого кода. Бывает множество случаев, когда классы могут быть без свойств. Но если у вас в проекте большинство классов без свойств - это серьезный сигнал остановится и подумать, а все ли верно?
Если честно, классы без состояний и свойств вызывают у меня очень серьезное подозрение. Я имею в виду вообще без свойств. Если их нет, то это уже получается что-то без состояний, в чем бывает необходимость, но очень редко. Просто посмотреть на классы в составе .NET, как часто мы наталкиваемся на классы со свойствами.
Если в классе можно все методы сделать статичными, и функционал не поменяется, то почему они не статичные?
Если у тебя в коде есть if оператор, который в зависимости от условия выполняет разные действия:
void func() {
If (type == 1) {
// логика функции #1
. . .
. . .
}
If (type == 2) {
// логика функции #2
. . .
. . .
}
}