Как я сортирую свой код (по имени метода) в Visual Studio 2008?

Я помещаю превосходный ответ JLBorges на аналогичный вопрос дословно из cplusplus.com, так как это наиболее краткое объяснение, которое я прочитал по этому вопросу.

] В шаблоне, который мы пишем, есть два типа имен, которые можно использовать - зависимые имена и не зависимые имена. Зависимое имя - это имя, которое зависит от параметра шаблона; неизменяемое имя имеет то же значение, независимо от параметров шаблона.

Например:

template< typename T > void foo( T& x, std::string str, int count )
{
    // these names are looked up during the second phase
    // when foo is instantiated and the type T is known
    x.size(); // dependant name (non-type)
    T::instance_count ; // dependant name (non-type)
    typename T::iterator i ; // dependant name (type)

    // during the first phase, 
    // T::instance_count is treated as a non-type (this is the default)
    // the typename keyword specifies that T::iterator is to be treated as a type.

    // these names are looked up during the first phase
    std::string::size_type s ; // non-dependant name (type)
    std::string::npos ; // non-dependant name (non-type)
    str.empty() ; // non-dependant name (non-type)
    count ; // non-dependant name (non-type)
}

То, что зависит от зависимого имени, может быть чем-то другим для каждого конкретного экземпляра шаблона. Как следствие, шаблоны C ++ подвержены «двухфазному поиску имен». Когда шаблон сначала анализируется (до того, как выполняется какое-либо создание), компилятор просматривает не зависящие имена. Когда происходит конкретное создание шаблона, параметры шаблона известны к тому времени, и компилятор ищет зависимые имена.

На первом этапе анализатор должен знать, является ли зависимое имя именем типа или имени не-типа. По умолчанию зависимым именем считается имя не-типа.

Использовать ключевое слово typename только в объявлениях шаблонов и определениях, приведенных ниже.

blockquote>

у вас есть квалифицированное имя, которое относится к типу и зависит от параметра шаблона.

12
задан Ian Ringrose 26 October 2011 в 10:38
поделиться

5 ответов

Это - свободный плагин, который делает то, что Вы спрашиваете: http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=800978aa-2aac-4440-8bdf-6d1a76a5c23c

Обновление

, К сожалению, ссылка устарела. Можно загрузить Regionerate в http://www.rauchy.net/regionerate/docs/2007/05/download.html

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

Можно найти или быть в состоянии сделать макрос, чтобы сделать это, но существует не создано в функциональности VS для сортировки методов. Некоторые сторонние инструменты для повышения производительности как Resharper и CodeRush обеспечивают некоторую функциональность для переупорядочения кода.

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

ReSharper имеет Код, Переупорядочивающий функциональность и представление File Structure , которое позволяет, Вы действительно перетаскиваете переупорядочение.

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

Resharper сделает хорошее задание ограниченным способом. Это зависит от того, сколько Вы хотите. Например, это привычка идет и переупорядочивает Ваши переопределения на странице asp.net на основе жизненного цикла или чего-либо как этот, но это сохранит свойства, поля, методы и что не ясно сгруппированными

РЕДАКТИРОВАНИЕ: eway я обращался к автоматическому переупорядочению, иначе переформатировавшему.

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

Если вы используете Resharper, вы можете изменить шаблон макета элементов типа, чтобы он упорядочивал ваш код так, как вам нравится. См. Раздел Resharper> Параметры> Языки> C #> Макет членов типа. alt text http://www.jetbrains.com/resharper/features/screenshots/40/automatic_member_layout_full.png

Вы можете например, сначала поместите в файл методы с определенными атрибутами ... например методы, отмеченные NUnit's [Setup] и [TearDown], могут предшествовать методам, отмеченным [Test], помещая блок вроде:

<!--Fixture Setup/Teardown-->
<Entry>
  <Match>
    <And>
      <Kind Is="method"/>
      <Or>
        <HasAttribute CLRName="NUnit.Framework.TestFixtureSetUpAttribute" Inherit="true"/>
        <HasAttribute CLRName="NUnit.Framework.TestFixtureTearDownAttribute" Inherit="true"/>
      </Or>
    </And>
  </Match>
 </Entry>

перед:

<!--Test methods-->
<Entry>
  <Match>
    <And Weight="100">
      <Kind Is="method"/>
      <HasAttribute CLRName="NUnit.Framework.TestAttribute" Inherit="false"/>
    </And>
  </Match>
  <Sort>
    <Name/>
  </Sort>
</Entry>

, а затем иметь общий для всего остального:

<!--All other members-->
<Entry>
  <Sort>
    <Name/>
  </Sort>
</Entry>

Шаблон система очень мощная и должна соответствовать вашим потребностям.

4
ответ дан 2 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

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