Что Вы думаете о сворачивании кода? [закрытый]

try >> tsd install lodash --save

23
задан Jeff Atwood 20 October 2008 в 09:02
поделиться

22 ответа

9 из 10 раз, сворачивание кода означает, что Вам не удалось использовать принцип SoC для какой его ценность.
я более или менее чувствую то же самое о частичных классах. Если у Вас есть часть кода, Вы думаете, является слишком большим, необходимо нарубить его в управляемом (и допускающий повторное использование) части, не скрыть или разделить его.
Это укусит Вас в следующий раз, когда кто-то должен изменить его и не видеть логику, скрытую в 250 монстрах строки метода.

Каждый раз, когда Вы можете, вытащите некоторый код из основного класса, и в класс фабрики или помощника.

foreach (var item in Items)
{
    //.. 100 lines of validation and data logic..
}

не так читаемо как

foreach (var item in Items)
{
    if (ValidatorClass.Validate(item))
        RepositoryClass.Update(item);
}



Мои 0,02$ так или иначе.

35
ответ дан Lars Mæhlum 29 November 2019 в 00:41
поделиться

фактическая статья Coding Horror получила меня думающий об этом также.

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

0
ответ дан Cœur 29 November 2019 в 00:41
поделиться

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

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

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

0
ответ дан Scott Dorman 29 November 2019 в 00:41
поделиться

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

0
ответ дан dmckee 29 November 2019 в 00:41
поделиться

Eclipse делает часть этого в Java (или PHP с плагинами) самостоятельно. Позволяет Вам сворачивать функции и такой. Я склонен любить его. Если я знаю то, что делает функция и я не работаю над нею, я не должен смотреть на нее.

0
ответ дан Adam Lerman 29 November 2019 в 00:41
поделиться

У меня действительно нет проблемы с использованием #region для организации кода. Лично, я буду обычно устанавливать различные регионы для вещей как свойства, обработчики событий и общественность/закрытые методы.

0
ответ дан Brandon Wood 29 November 2019 в 00:41
поделиться

Я предпочитаю #regions сам, но старый коллега не мог выдержать скрыть вещи. Я понял его точку, как только я работал на странице с 7 #regions, по крайней мере 3 из которых были автоматически сгенерированы и имели то же имя, но в целом я думаю, что они - полезный способ разделить вещи и сохранить все менее нарушенным.

0
ответ дан Adam V 29 November 2019 в 00:41
поделиться

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

Это - вероятно, хороший ответ, также!

Ужас Кодирования

Редактирование: Блин, Кусочек избил меня к этому!

1
ответ дан Cœur 29 November 2019 в 00:41
поделиться

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

существует превосходный набор макросов VS.NET Roland Weigelt, доступным из его записи в блоге, Лучшая Поддержка клавиатуры для #region... #endregion. Я использовал их в течение многих лет, отображаясь ctrl +. сворачивать текущий регион и ctrl ++ для расширения его. Найдите, что это работает намного лучше, что функциональность VS.NET по умолчанию, которая сворачивается/разворачивает все.

1
ответ дан Mun 29 November 2019 в 00:41
поделиться

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

1
ответ дан Thomas Owens 29 November 2019 в 00:41
поделиться

Я обычно нахожу, что при контакте с кодом как События в C#, где существует приблизительно 10 строк кода, которые являются на самом деле просто частью объявления события (EventArgs классифицируют объявление делегата и объявление события) Помещение региона вокруг них и затем сворачивания их из пути делает его немного более читаемым.

2
ответ дан Mykroft 29 November 2019 в 00:41
поделиться

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

2
ответ дан Tundey 29 November 2019 в 00:41
поделиться

Сворачивание региона было бы прекрасно, если бы я не должен был вручную поддерживать группировки региона на основе функций моего кода, которые являются внутренними языку. Например, компилятор уже знает, что это - конструктор. Модель кода IDE уже знает, что это - конструктор. Но если я хочу видеть представление кода, где конструкторы группируются, по некоторым причинам я должен вновь заявить о том, что этими вещами являются конструкторы путем физического размещения их вместе и затем помещения группы вокруг них. То же идет для любого другого способа нарезать класс/структуру/интерфейс. Что, если я передумал и хочу видеть общедоступный/защищать/частный материал, выделенный в группы сначала, и затем сгруппированный членским видом?

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

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

2
ответ дан Daniel Earwicker 29 November 2019 в 00:41
поделиться

Регионы никогда не должны использоваться в методах. Они могут привыкнуть к групповым методам, но это должно быть обработано с экстремальной осторожностью так, чтобы читатель кода не сходил с ума. Нет никакого смысла в складных методах их модификаторами. Но иногда сворачивание может увеличить удобочитаемость. Для, например, группирующий некоторые методы, которые Вы используете для работы вокруг некоторых проблем при пользовании внешней библиотекой и Вы не захотите посещать, слишком часто может быть полезным. Но кодер должен всегда искать решения как обертывание библиотеки с соответствующими классами в этом конкретном примере. Когда все остальное перестанет работать, используйте сворачивание для улучшения readibility.

2
ответ дан Serhat Ozgel 29 November 2019 в 00:41
поделиться

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

После этих слов я нахожусь на заборе о регионах. По большей части я не использую их; однако, я работаю с кодом каждый день, который включает регионы - некоторые люди идут действительно тяжелые на них (складывающий закрытые методы в регион и затем каждый метод, свернутый в его собственный регион), и некоторые люди идут свет на них (складывающиеся перечисления, складывая атрибуты, и т.д.). Мое общее правило ползунка, на данный момент, состоит в том, что я только поместил код в регионы если (a) данные, вероятно, останутся статичными или не будут затрагиваться очень часто (как перечисления), или (b) если существуют методы, которые реализованы из необходимости из-за разделения на подклассы или реализации абстрактного метода, но, снова, не будут затрагиваться очень часто.

2
ответ дан Tom 29 November 2019 в 00:41
поделиться

Tom

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

3
ответ дан Community 29 November 2019 в 00:41
поделиться

Я предпочитаю частичные классы в противоположность регионам.

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

3
ответ дан Jon Limjap 29 November 2019 в 00:41
поделиться

Я использую Textmate (только Mac), который имеет сворачивание Кода, и я нахожу его действительно полезным для сворачивания функций, я знаю то, что делает моя функция "getGet", мне не нужен он поднимающий 10 строк, о, так ценного экранного пространства.

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

3
ответ дан Teifion 29 November 2019 в 00:41
поделиться

В то время как я понимаю проблему что Jeff, и. al. имеют с регионами, что я не делаю , понимают, то, почему удар CTRL + M , CTRL + L для расширения всех регионов в файле является настолько трудным иметь дело с.

5
ответ дан Abhishek 29 November 2019 в 00:41
поделиться

Я использую #Region для сокрытия ужасного и бесполезного автоматически сгенерированного кода, который действительно принадлежит автоматически сгенерированной части частичного класса. Но, при работе со старыми проектами или обновленными проектами, у Вас не всегда есть та роскошь.

Что касается других типов сворачивания, я сворачиваю Функции все время. При именовании функции хорошо Вы никогда не должны будете смотреть внутри, если Вы не тестируете что-то или (пере-) запись ее.

5
ответ дан EndangeredMassa 29 November 2019 в 00:41
поделиться

Иногда Вы могли бы работать над командой, где #regions поощряются или требуются. Если Вы похожи на меня, и Вы не можете выдержать бездельничание со свернутым кодом, можно выключить выделение для C#:

  1. Опции-> Текстовый редактор-> C#-> Вкладка "Дополнительно"
  2. Снятие флажка "Переходит к режиму выделения, когда файлы открываются"
10
ответ дан Joseph Daigle 29 November 2019 в 00:41
поделиться

Об этом говорили на Ужас Кодирования .

Моя персональная вера, это - то, что они полезны, но как что-либо в избытке может быть слишком много.

я использую его для упорядочивания моих блоков кода в:
Перечисления
Объявления
Конструкторы
Методы
Обработчики событий
Свойства

14
ответ дан Cœur 29 November 2019 в 00:41
поделиться
Другие вопросы по тегам:

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