Есть обычные принципы, которые еще никуда не делись
- связанность => Каждый класс должен делать только 1 заданную задачу. Эти задачи должны выполняться с помощью аттрибутов и методов этого класса. Поэтому в идеале надо добиваться сильной связанности этих аттрибутов и функций.
- След за этим идет сразу же DRY-Принцын - Dont Repeat Yourself - Когда ты многие функции, аттрибуты раскидываешь как попало и переписываешь заного из-за малейшего изменения, так и плодиться уйма не нужного кода со слабой связанностью.
- Возможность тестирования => мне очень интересно какой рак это тестить класс из 4000 строк...)))
- И самое главное "Читабельность, Понимание" => Я конечно верю, что существуют проэкты или задачи, где 4000 строк это было бы норма для 1го класса, даже с идеальной проектировкой. Но я не думаю, что в этом случае это те самые исключения. Лично по моему скудному мнению, если класс уже с 1000-2000 строк, то надо хотябы задуматься о том, что что-то надо бы изменить или начертить UML диаграмму этой области(если ее нету).
Есть конечно и остальные, но это основное, что касается 4000+ строк