вопросом о c# - является там инструмент для идентификации, где я должен/могу, используют оператор “использования”, чтобы гарантировать, что ресурсы закрываются?

вопросом о c# - является там инструмент для идентификации, где я должен/могу, используют оператор "использования", чтобы гарантировать, что ресурсы закрываются? (для предотвращения утечек памяти и т.д.)

Включая обоих случаи, что:

a) существуют ресурсы, не закрытый и

b) синтаксис использует try-catch-finally и identies, это могло быть изменено на использование

Спасибо

5
задан Greg 29 January 2010 в 00:16
поделиться

4 ответа

Не уверен, что он явно охватывает случай b, но Gendarme - прекрасный инструмент, который скажет вам , когда у вас нет , используя оператора вокруг одноразовых объектов.

2
ответ дан 15 December 2019 в 01:01
поделиться

Посмотрите, если вы сможете включить анализ кода в вашем проекте и включить Microsoft.Reality: Утилизация объектов перед потери объемом Правило

1
ответ дан 15 December 2019 в 01:01
поделиться

Я немного сбит с толку вашим кодом OnExtendedEvent - хотите ли вы переотправить событие как SomeEvent ?

Когда клиент добавляет обработчик события, они ожидают, что смогут удалить обработчик события во время обработки события, например:

someObject.SomeEvent += OnSomeEvent;
// ...
private void OnSomeEvent(object sender, EventArgs e)
{
    someObject.SomeEvent -= OnSomeEvent;
}

Если вы не соблюдаете стандартную практику диспетчеризации, этот код вызовет исключение к удивлению человека, использующего ваш код.

-121--3677833-

Предполагая, что кэш должен быть защищен от потоков, следует изучить пример кэша в книге Брайана Гетца «Java Concurrency in Practice». Я не могу рекомендовать это достаточно высоко.

-121--1501823-

Не знаю, какой именно инструмент вы ищете, но Code Rush выделит ваш код, когда у вас есть объект из класса, который реализует IDisposable, и вы не удаляете его.

1
ответ дан 15 December 2019 в 01:01
поделиться

В эти дни стандарт POSIX с использованием getopt () (он же getopt (3) ) широко используется в качестве стандартной нотации, но в первые дни люди экспериментировали. На некоторых компьютерах команда sort больше не поддерживает нотацию + . Однако различные команды (особенно ar и tar ) принимают элементы управления без какого-либо символа префикса - и dd (на которые ссылается Алок в комментарии) вообще используют другое соглашение.

Соглашение GNU об использовании « -- » для длинных параметров (поддерживается getopt _ long (3) ) было изменено с использования « + ». Конечно, X11 программное обеспечение использует один тире перед многосимвольными опциями. Итак, все дело в коллекции исторических реликвий, когда люди экспериментировали с тем, как лучше с этим справиться.

POSIX документирует Конвенции о коммунальных услугах , с которыми она работает, за исключением тех случаев, когда исторический прецедент является более сильным.


Какие существуют стили обработки опций?

[В свое время SO 367309 содержал следующий материал в качестве моего ответа. Он был первоначально задан 2008-12-15 02:02 FerranB , но впоследствии был закрыт и удален.]

Сколько различных типов опций вы распознаете? Я могу думать о многие, в том числе:

  • Однобуквенные варианты, которым предшествует одинарный тире, группируемый при наличии нет аргумента, аргумент может быть присоединен к букве опции или в следующем argument (много, много команд Unix; большинство команд POSIX).
  • Однобуквенные параметры, которым предшествует одинарный тире, группировка недопустима, должны быть присоединены аргументы (RCS).
  • Однобуквенные параметры, которым предшествует одинарный тире, группировка недопустима, аргументы должны быть отдельными (pre-POSIX SCCS, IIRC).
  • Параметры из нескольких букв, которым предшествует один тире, могут быть аргументами прилагается или в следующем аргументе (X11 программы; также Java и многие программы на Mac OS X с наследием NEXTSTEP).
  • Варианты с несколькими буквами, которым предшествует один тире, могут быть сокращены (Atria Clearcase).
  • Варианты с несколькими буквами, которым предшествует один плюс (устаревший).
  • Варианты с несколькими буквами, которым предшествует двойной тире; аргументы могут следовать за «» = или быть отдельной (утилиты GNU).
  • Параметры без префикса/суффикса, некоторые имена имеют сокращения или являются подразумевается, что аргументы должны быть отдельными. ( AmigaOS Shell )

Для выбора необязательного аргумента иногда необходимо присоединить аргумент ( co-p1.3 rcsfile.c ), иногда он должен следовать за знаком «» = «». POSIX не поддерживает опционально аргументы содержательно (POSIX getopt () разрешает их только для последнего в командной строке).

Во всех разумных системах опций используется опция, состоящая из двойного тире (' -- ') для обозначения «конца вариантов» - следующие аргументы: «non-option arguments» (обычно имена файлов; POSIX называет их «операндами») даже если они начинаются с тире. (Я рассматриваю поддержку этой нотации как императив.Помните, что если параметру - предшествует параметр, требующий аргумента, то - будет рассматриваться как аргумент параметра, а не как маркер «конца параметров».)

Многие, но не все программы принимают один тире в качестве имени файла для обозначения стандартный ввод (обычно) или стандартный вывод (иногда). Иногда, как и в случае GNU ' tar ', оба могут использоваться в одной командной строке:

... | tar -cf - -F - | ...

Первый соло-тире означает 'write to stdout'; второй означает «прочитанный файл» имена из stdin '.

Некоторые программы используют другие соглашения, то есть опции, которым не предшествует тире. Многие из них из самых старых дней Unix. Например, «tar» и «ar» принимают параметры без тире, поэтому:

tar cvzf /tmp/somefile.tgz some/directory

Команда dd использует opt = value исключительно:

dd if=/some/file of=/another/file bs=16k count=200

Некоторые программы позволяют перемежать параметры и другие аргументы полностью; компилятор C, make и утилиты GNU работают без POSIXLY_CORRECT в среде являются примерами. Многие программы ожидают параметры, предшествующие другим аргументам.

Обратите внимание, что git и другие команды VCS часто используют гибридную систему:

git commit -m 'This is why it was committed'

В качестве одного из аргументов используется подкоманда. Часто существуют дополнительные «глобальные» параметры, которые могут быть заданы между командой и подкомандой. Примеры этого есть в POSIX; команда sccs находится в этой категории; можно утверждать, что некоторые другие команды, выполняющие другие команды, также относятся к этой категории: приятные и xargs пружинят к разуму от POSIX; sudo не является примером POSIX, как и svn и cvs .


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

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

Другим нежелательным поведением является непоследовательность в стиле обращения аргументы (особенно для одной программы, но также в рамках номера люкс программы). Либо требовать прикрепленные аргументы, либо требовать отсоединенные аргументы (или разрешить любой), но не имеют некоторых параметров, требующих присоединенный аргумент и другие, требующие отдельного аргумента. И быть непротиворечиво относительно того, может ли « = » использоваться для разделения параметра и аргумент.

Как и в случае со многими (связанными с программным обеспечением) вещами, согласованность больше важно, чем индивидуальные решения. Использование средств автоматизации и стандартизация обработки аргументов помогает обеспечить согласованность.


Что бы вы ни делали, пожалуйста, прочитайте Параметры командной строки TAOUP и рассмотрим Стандарты для интерфейсов командной строки . ( Добавлено J F Себастьян - спасибо; Я согласен. )

-121--3064106-

Должны ли вы? Да .

Почему? Log4J по существу устарел с помощью обратного входа .

Это срочно? Может, нет.

Это безболезненно? Возможно, но это может зависеть от ваших записей регистрации.

Обратите внимание, что если вы действительно хотите воспользоваться всеми преимуществами LogBack (или SLF4J), то вам действительно нужно написать соответствующие операторы регистрации . Это даст такие преимущества, как более быстрый код из-за ленивой оценки и меньше строк кода, потому что вы можете избежать защиты.

Наконец, я настоятельно рекомендую SLF4J. (Зачем воссоздавать колесо с собственным фасадом?)

-121--1821015-

FxCop - это бесплатный инструмент от Microsoft, который может это сделать. Он также включен в варианты «Team System» Visual Studio 2005 +

0
ответ дан 15 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

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