это путь. Но выберите что-то, настройте это, используйте это последовательно, пока это не станет рефлексом, и таким образом забудьте об этом.

ылозаданный ранее (вопрос № 308581), но этот конкретный вопрос и ответы немного специфичны для C ++, и многие вещи там не очень актуальны в таких языках, как Java или C #.

Дело в том, что даже после рефакторизации я обнаружил, что в моих файлах исходного кода есть немного беспорядка. Я имею в виду, с телами функций все в порядке, но я не совсем доволен тем, как упорядочены сами функции. Конечно, в IDE, такой как Visual Studio, относительно легко найти члена, если вы помните, как он называется, но это не всегда так.

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

Другой подход состоит в том, чтобы попытаться сгруппировать связанные методы вместе (возможно, в области), но очевидно, что у этого есть свои пределы, как будто в одном классе много несвязанных методов, тогда, возможно, пришло время разделить класс на два или более меньших класса.

Так что подумайте: ваш код был реорганизован должным образом, чтобы он соответствовал всем требованиям, указанным вКод завершен, но вы все равно хотели бы изменить порядок ваших методовэргономические цели, Какой у тебя подход?

(На самом деле, хотя это и не совсем техническая проблема, эта проблема чертовски меня раздражает, поэтому я был бы очень признателен, если бы кто-то смог придумать хороший подход)

 nawfal01 мар. 2013 г., 22:21
этот вопрос не имеет отношения к "эргономике оборудования", о которой идет речь.

Ответы на вопрос(8)

который я только что создал, сверху класса. Таким образом, когда я открываю проект, я возвращаюсь к последнему разрабатываемому методу. Мне легче вернуться «в зону».

Это также отражало тот факт, что метод (который использует другие методы), который я только что создал, является верхним слоем других методов.

Группируйте связанные функции вместе, не стесняйтесь ставить все частные функции внизу. Аналогично, имитируя обоснование дизайна свойств C #, связанные функции должны находиться в непосредственной близости друг от друга, языковая конструкция C # для свойств усиливает эту идею.


Постскриптум
Если только C # может вкладывать такие функции, как Pascal или Delphi. Может быть, Андерс Хейлсберг может поместить его в C #, он также изобрел Turbo Pascal и Delphi :-)D язык имеет вложенные функции.

 Tamas Czinege21 янв. 2009 г., 13:08
Я тоже скучаю по вложенным функциям в C # ... Возможно, есть какая-то причина, по которой C # не имеет вложенных функций, но я все еще хотел бы, чтобы их поддерживали.
 Treb21 янв. 2009 г., 12:52
Да, пока вы держите его снизу вверх, не погружаясь сверху вниз ;-)

ого вопроса и придумал ужасно сложную систему для упорядочения объявлений в классе. Порядок будет зависеть от спецификатора доступа, является ли метод или поле статическим, временным, изменчивым и т. Д.

Это того не стоило. ИМХО, вы не получите реальной выгоды от такой сложной договоренности.

То, что я делаю сейчас, намного проще:

Конструкторы (сначала конструктор по умолчанию, иначе порядок не имеет значения.)Методы, отсортированные по имени (статические и нестатические значения не имеют, абстрактные и конкретные, виртуальные и конечные и т. Д.)Внутренние классы, отсортированные по имени (интерфейс против класса и т. Д. Не имеет значения)Поля, отсортированные по имени (статические и нестатические значения не имеют.) Сначала необязательно константы (public static final), но это не обязательно.
Решение Вопроса

ей IDE, то есть Visual Studio. Большую часть времени я использую F12 для перехода к объявлению (или Shift-F12 для поиска всех ссылок) и Ctrl + - для возврата назад.

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

П.С .: И я тоже пользуюсьRockScroll, надстройка VS, которая делает навигацию и прокрутку больших файлов довольно простой

 Benjol15 апр. 2010 г., 12:18
@DrJokepu, у меня никогда не было проблем - вы уверены, что у вас не установлены другие надстройки?
 Tamas Czinege21 янв. 2009 г., 12:35
Диво: Да, конечно. Сбои начались сразу после того, как я установил RockScroll. Это происходит только когда я закрываю решение, так что это не так раздражает, но это определенно RockScroll.
 Tamas Czinege15 апр. 2010 г., 13:13
@Benjol: Нет, но это определенно RockScroll. Удаление его заставило сбои уйти. Может мне просто не повезло.
 Tamas Czinege21 янв. 2009 г., 11:42
О да, RockScroll - отличная помощь, я пользуюсь им постоянно. К сожалению, это приводит к сбою Visual Studio несколько раз в день.
 Dirk Vollmar21 янв. 2009 г., 12:20
Вы уверены, что RockScroll является причиной аварии? Никогда не испытывал это с VS2008 ...

Я обычно ставлю статику на первое место.

Далее идут переменные и свойства члена, свойство, которое обращается к одному конкретному члену, группируется вместе с этим членом. Я пытаюсь сгруппировать связанную информацию, например, все строки, которые содержат информацию о пути.

В-третьих, это конструктор (или конструкторы, если их несколько).

После этого следуйте методикам. Они упорядочены по тому, что кажется логичным для этого конкретного класса. Я часто группирую методы по уровню доступа: приватный, защищенный, публичный. Но недавно у меня был класс, который должен был переопределить множество методов из своего базового класса. Поскольку я там много работал, я собрал их в одну группу, независимо от уровня доступа.

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

В C # я использую#region отделить эти группы друг от друга, но это дело вкуса. Есть много людей, которым не нравятся регионы. Я делаю.

Я строг с

константы и статические поля сначала в альфа-порядкене приватные внутренние классы и перечисления в альфа-порядкеполя (и атрибуты, где это применимо), в альфа-порядкеctors (и dtors, где это применимо)статические методы и фабричные методыметоды ниже, в альфа-порядке, независимо от видимости.

Я всегда использую возможности автоформатирования IDE. Так что я постоянно бьюCtrl+Shift+F когда я работаю Я экспортирую возможности автоформатирования в XML-файл, который я всегда ношу с собой.

Это помогает вниз по дорожке при выполнении слияний и перебазирования. И это тот тип вещей, который вы можете автоматизировать в своей IDE или в процессе сборки, чтобы вам не приходилось потеть мозговыми клетками.

Я не претендуюМОЙ МЕТОД это путь. Но выберите что-то, настройте это, используйте это последовательно, пока это не станет рефлексом, и таким образом забудьте об этом.

я бы сказал, конструкторы, открытые методы, частные методы, в таком порядке. Я всегда стараюсь группировать методы, реализующие определенный интерфейс вместе.

Мое любимое оружие выбора - IntelliJ IDEA, у которого есть несколько хороших возможностей для сворачивания тел методов, поэтому довольно просто отобразить два метода друг над другом, даже если их фактическое положение в исходном файле находится на расстоянии 700 строк.

Я был бы осторожен с изучением положения методов в фактическом источнике. Ваша IDE должна дать вам возможность просматривать источник так, как вы хотите. Это особенно актуально при работе над проектом, где разработчики могут использовать свою IDE по своему выбору.

 Tamas Czinege21 янв. 2009 г., 12:01
Я обычно стараюсь избегать областей или методов складывания, потому что я ненавижу нажимать на эти крошечные коробки :)
 Tamas Czinege21 янв. 2009 г., 12:02
В любом случае, подумайте об этом: вы помещаете свои методы a, bstract в верхнюю часть, возможно, даже поверх конструктора, так как это имеет смысл, у них нет функциональных тел, верно? Теперь, где вы размещаете виртуальные методы (то есть методы, которые, как ожидается, будут переопределены)? Рядом с абстрактными методами? Или где-то еще?

возможно, вы страдаете от синдрома класса бога.

Fwiw, я лично склонен идти с:

class
{
  #statics (if any)

  #constructor

  #destructor (if any)

  #member variables

  #properties (if any)

  #public methods (overrides, etc, first then extensions)

  #private (aka helper) methods (if any)
}

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

 annakata21 янв. 2009 г., 11:42
Методы имеют сетевой тип отношений, а не строгий, иерархический, поэтому я думаю, что любая попытка объединить «связанные» элементы является своего рода ошибкой, особенно когда «VS найти все экземпляры» настолько хорош в VS. Я считаю более уместным видеть вещи, которые разделяют сферу вместе.
 Tamas Czinege21 янв. 2009 г., 11:39
Здесь нет божьих уроков: как я уже упоминал, все реорганизовано должным образом, и здесь нет слишком больших классов, но я все еще чувствую, что не очень доволен тем, как организованы ученики.

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

то есть ctors в верхней части класса, затем статические методы, затем экземпляры методов ... что-то в этом роде

к сожалению, я не могу вспомнить название этого дополнения! Я также думаю, что это дополнение было бесплатно! может кто-то другой может нам помочь?

Ваш ответ на вопрос