Лучшие практики: пространство имен методов Расширения C# и продвижение дополнительных методов

Я не уверен, но я верю (я == i), не атомарная операция в многопоточном процессе, поэтому если я оценю, то будет изменен другим потоком между нажатиями, он - значение для укладки на потоке, выполняющем цикл, тогда то условие может быть ложью.

40
задан Community 23 May 2017 в 11:54
поделиться

6 ответов

Мы поместили их всех в отдельное пространство имен Company.Common.Extensions . Таким образом, если у вас есть какой-либо из наших методов расширения, у вас есть их все. К тому же, по крайней мере в моем магазине, нам не нужно беспокоиться о том, что наши разработчики не знают о методах расширения. Меня беспокоит обратное, перегрузка метода расширения! :)

38
ответ дан 27 November 2019 в 01:45
поделиться

Проблема здесь не в названии пространства имен, а в отсутствии документации и знаний вашего разработчикам.

Поместите их в любое имеющее смысл пространство имен, напишите вики-статью, документирующую все ваши методы расширения, затем отправьте электронное письмо своим разработчикам со ссылкой на вики-статью.

9
ответ дан 27 November 2019 в 01:45
поделиться

This is not a namespace problem it is a communication problem.

If these methods are useful you need to communicate this to the developers and, conversely, act on the feedback from them (with appropriate levels of judgement).

Placing anything into the System namespace is a recipe for disaster and confusion later. The only times you ever want to do this is to 'back port' functionality into older frameworks and then you probably shouldn't do it yourself but should use something like LinqBridge to do it.

Be wary of the desire to throw all extensions into one namespace unless they really are widely useful together. Some developers may find the wood lost for the trees if they are bombarded with everything and the kitchen sink via intellisense.

Keeping the namespace the company name is sensible in general to avoid confusion.

5
ответ дан 27 November 2019 в 01:45
поделиться

@ Juri- Если задуматься, это та же проблема, что и разработчикам, зная, что класс X существует в платформе .NET. Коммуникация является ключевым моментом в том, что все члены команды используют правильные классы, будь то методы расширения или какой-либо другой помощник.

Как заявил JP, я часто вижу методы расширения в какой-то подпапке под названием Extensions. Надеюсь, когда вы заявите, что используете my.company.web.utils, пространство имен на самом деле основано на Pascal?

Даже если вы разместите их в хорошем месте, нет 100% гарантии, что другие разработчики будут их использовать.

3
ответ дан 27 November 2019 в 01:45
поделиться

Presuming you use Visual Studio, one way would be to create a custom Class template (or modify the default one) so that whenever a developer creates a new class file it automatically has a using statement with your namespace(s). See Customize Visual Studio 2005 Templates for Coding Productivity.

3
ответ дан 27 November 2019 в 01:45
поделиться

Да, я думаю, что размещение методов расширения в именах собственной компании является наилучшей практикой. поместить его в пространство имен System - это ленивая операция

1
ответ дан 27 November 2019 в 01:45
поделиться
Другие вопросы по тегам:

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