Как переупорядочить участников типа с Resharper?

Лично, я думаю ответы, которые настаивают, что это никогда не, или только редко исправляйте для синхронизации на this, дезинформированы. Я думаю, что это зависит от Вашего API. Если Ваш класс является ориентированной на многопотоковое исполнение реализацией и Вами, так зарегистрируйте его, то необходимо использовать this. Если синхронизация не должна делать каждый экземпляр класса в целом ориентированным на многопотоковое исполнение в вызове, он - открытые методы, то необходимо использовать частный внутренний объект. Допускающие повторное использование компоненты библиотеки часто попадают в бывшую категорию - необходимо думать тщательно, прежде чем Вы не разрешите пользователю обертывать свой API во внешнюю синхронизацию.

В бывшем случае, с помощью this позволяет нескольким методам быть вызванными атомарным способом. Одним примером является PrintWriter, где можно хотеть произвести несколько строк (скажите отслеживание стека консоли/регистратору), и гарантируйте, что они появляются вместе - в этом случае то, что это скрывается, синхронизирующий объект внутренне является реальной болью. Другим таким примером являются синхронизируемые обертки набора - там необходимо синхронизироваться на самом объекте коллекции для итерации; так как повторение состоит из нескольких вызовов метода, Вы не можете защищать его полностью внутренне.

В последнем случае, я использую простой объект:

private Object mutex=new Object();

Однако видевший много дампов JVM и отслеживаний стека, которые говорят, блокировка является "экземпляром java.lang. Объект ()" я должен сказать, что использование внутреннего класса могло бы часто быть более полезным, как другие предположили.

Так или иначе, это - моя ценность на два бита.

Редактирование: Еще одна вещь, при синхронизации на this я предпочитаю синхронизировать методы и сохранять методы очень детализированными. Я думаю, что это более ясно и более кратко.

47
задан AngryHacker 17 September 2009 в 17:08
поделиться

2 ответа

Используйте функцию «Код очистки».

Порядок элементов можно настроить в параметрах ReSharper на языках, C #, макет членов типа. Это хорошо документированная спецификация макета XML, которую ReSharper использует при переупорядочении элементов.

88
ответ дан 26 November 2019 в 19:10
поделиться

В качестве альтернативы можно рассмотреть Regionerate . Мы используем и любим ReSharper, но Regionerate соответствует нашим потребностям в создании регионов и сортировке / перестановке членов. И, конечно же, все это настраивается.

ОБНОВЛЕНИЕ: Вместо этого мы начали использовать ReSharper's Code Cleanup .

4
ответ дан 26 November 2019 в 19:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: