Розбити проект на кілька файлів

MSDN з вами не згоден:
There are several situations when splitting a class definition is desirable:

* When working on large projects, spreading a class over separate files enables multiple programmers to work on it at the same time.

* When working with automatically generated source, code can be added to the class without having to recreate the source file. Visual Studio uses this approach when it creates Windows Forms, Web service wrapper code, and so on. You can create code that uses these classes without having to modify the file created by Visual Studio.

* To split a class definition, use the partial keyword modifier

Само собою зрозуміло, що підхід не той. Але питання було не про це. Не люблю відводити нитку міркування від теми. А то почнеться: «А що ти робиш?», «А ти не так пишеш!», «А навіщо тобі це треба?». Людина запитав, як йому доїхати на ковзанці до дачі - я відповів :) А чому він їде туди на ковзанці - нехай це він сам у себе запитає :)

Щодо перегляду підходу я згоден. не можу уявити навіщо може знадобитися значення змінної username в класі з математичними функціями. Використання глобальних змінних порушує инкапсуляцию. Якщо значення потрібно, то передавайте в якості параметра.

* When working on large projects, spreading a class over separate files enables multiple programmers to work on it at the same time.
Ну це знову ж означає, що щось не те з класом.
Хоча судячи з декомпільовану System.Windows.Forms.DataGrid, MS активно це використовує.

П.С. Допускаю таке тільки для nested-types, та й то ...