Для статических полей я остановился на StaticPascalCase (например, StaticPersonCache
), поскольку он явно отличает его от переменной экземпляра. Это включает частные статические поля , а также статические поля с другими модификаторами видимости.
Для статических переменных мне менее важно указывать открытую / закрытую видимость через имя, чем указывать, как переменная работает среди экземпляров. Кроме того, поскольку не существует (и не должно быть) большого количества статических переменных, модификатор «как по Хугаро» применяется не часто.
Аналогично, для потоковых статических переменных ([ThreadStatic] или ThreadLocal) я использую соглашение TS_UpperCamelCase (например, TS_Random
). Еще раз, этот «разрыв» с нормами передает очень важную информацию, которую другие разработчики могут не увидеть на первый взгляд. Таким образом, имя используется в качестве предостерегающего флага.
Я использую ReSharper и соответственно скорректировал предупреждения / подсказки; большинство других соглашений об именах остаются в настройках ReSharper по умолчанию.
Мой выбор таких "нестандартных" соглашений для статических / потоково-статических полей (примечание: Microsoft использует TS_ в некотором коде в библиотеке .NET) потому, что я столкнулся с более чем одним «причуды» из-за неправильной идентификации переменных Static / ThreadStatic / Instance: это гораздо сложнее сделать с StaticX
, TS_X
и _x
.