Region C# хорошо или плохо?
Как до сих пор считал, что никакой особой пользы от них нет. Можно конечно придумать ситуацию где будут полезны. Но вот делать их присутствие обязательным?
А у Вас какое мнение?
Польза в регионах есть - ими очень удобно группировать код. Например, если класс имплементирует несколько интерфейсов - я всегда использую регионы. Иногда имеет смысл отделить приватные методы от публичных и/или проперти от методов. Несколько раз использовал даже вложенные регионы :)
Вместе с тем, делать их присутствие обязательным - глупость :)
очень удобно группировать код
Пока что все известные мне случаи группировки сводятся сводятся или к code smell или к ненужности. То есть субъективное желание человека понять как то можно, но вот объективных причин никак не нахожу.
если класс имплементирует несколько интерфейсов
прежде всего непонятно для чего группировать по имплементации интерфейса и чем в этом случае не нравятся partial классы?
приватные методы от публичных и/или проперти от методов
А смысл? Скорее всего чисто для того чтобы новые заносить в нужные регионы.
У меня для этого есть решарпер который все автоматом сортирует как хочется. То бишь вначале идут все публичные по алфавиту, затем приватные и после проперти "с полями"
делать их присутствие обязательным - глупость
это то то меня и смущает. Постоянно открывать все регионы при просмотре файла можно еще как то привыкнуть, но писать и сортировать руками
Пока что все известные мне случаи группировки сводятся сводятся или к code smell или к ненужности.
Ну это твой опыт. Вот пример из моей жизни:
И как мне кажется, region'ы тут использованы к месту :D
прежде всего непонятно для чего группировать по имплементации интерфейса и чем в этом случае не нравятся partial классы?
Это не всегда нужно :) Смотри приведенный пример. Выводить имплементацию IEnumerable и IEnumerator в partial было бы явным перебором. Разбивать на partial имеет смысл, когда есть какое-то сильное логическое отличие. Например, у меня было так, что один тип данных надо было по-разному сериализовать. Вот сериализацию я вынес в partial.
У меня для этого есть решарпер
Решарпер не поставляется вместе со студией и не является стандартом. В то время, что регионы - встроенная фича.
Ну это твой опыт
безусловно, поэтому и интересует другое мнение.
Относительно примера, нужность регионов для меня спорная, больше сводимая к ненужности. Для нахождения ошибки или понятия как работает нужно регионы один фиг раскрывать.
Ну и коде стайл часто не предусматривает группировку по "определенным функциям". Да и при добавлении нового кода нужно поместить его еще и в "правильный регион" -это тоже не всегда прозрачно.
Решарпер не поставляется вместе со студией и не является стандартом
Кому как, возможно поэтому я и не приемлю регионы, рефакторинг уже не срабатывает.
Я себе давно уже купил и нисколько не жалею. Лицензия на программиста, а не на комп.
Как до сих пор считал, что никакой особой пользы от них нет. Можно конечно придумать ситуацию где будут полезны. Но вот делать их присутствие обязательным? А у Вас какое мнение?
мнение у меня есть, но я его не помню. читая такие топики, вспоминается старинная народная мудрость: когда коту нефер делать, он ... задумывается о сущности регионов : )
но лучше "некоторое понимание" - в штудию!
но проблемо, но безусловно, просто просто как личные догадки ни на что не претендующие. С точки зрения того кому это нравится.
Для начала две вещи которые я раньше не знал
-Ctrl/M L открывает все регионы в файле
-если навести курсор мыши на закрытый регион, то можно увидеть первые х-строк содержимого (где то 20-30 думаю)
Если много лет разрабатывать и поддерживать одну часть проекта/проект то то код изучать не нужно, удобнее скорее найти то что нужно.
Ну и если видишь группы типа этих то и искать проще и можно не обращать внимание на группы которые в данную минуту не нужны. А если что, то просто "мышку на регион".
"Кодирование строк"
"Кодирование региона"
"декодер"
"поля"
"публичные методы"
То есть в коде наводится дополнительный порядок. Зачем мне видеть часть "поиск символа" когда я и так наизусть знаю как он там ищется.
Фактически вместо кода получается псевдокод более высокого уровня.
Если много лет разрабатывать и поддерживать одну часть проекта/проект то то код изучать не нужно, удобнее скорее найти то что нужно.
------
Дошло?
Ну а теперь прикинь что использование прописано в полиси.
Например, имплементация интерфейсов обязательно врапируется регионом.
Да, можно и в другой файл, но не всегда удобно...
Аналогично - есть локальные переменные, есть конструкторы, есть паблик методы, есть паблик пропертя...
Для меня быстрее найти метод в регионе, где он должен быть, чем выбрать его из списка методов в Студии.
Не привык пользоваться этой фичей Студии.
Дошло?
неа
Для меня быстрее найти метод в регионе, где он должен быть
Видишь, для тебя, а мне откуда знать в каком регионе должен быть метод? И какой метод вообще нужно искать? И куда пихать новый метод? Гораздо проще когда все автоматом, допустим по алфавиту упорядочено упорядочено. И для каждого файла нужно открывать все регионы.
А то какой смысл в таком файле
public class Abc { Fields <- region Methods <- region
... }
хотя мне приходится только гадать отчего кому то регионы сильно нравятся.
-----
Ну если полиси не читаешь и/или им не следуешь - хрен его знает окедова...
И какой метод вообще нужно искать?
-----
Не знаю. В плане регионов - понятия не имею.
Хотя... где-то в коде есть регионы Сериализация...
Об содержимом, надеюсь, догадаешься сам...
И куда пихать новый метод?
Гораздо проще когда все автоматом, допустим по алфавиту упорядочено упорядочено.
------
Ну да ради бога - удобнее - делай так.
И для каждого файла нужно открывать все регионы.
-----
Зачем?
Мне вот при генерации было важно сгенерировался кусок или пролетел мимо.
Хочешь сказать что мне нужно открывать регионы если известно что кусок обернут регионом?
Содержимое меня как раз не интересует - ели есть - будет правильно...
А то какой смысл в таком файле
------
Помнится, в изначальных Сях была фича - декларировать переменные блока в начале блока.
Потом от нее долго и медленно отходили в сторону произвольного места декларации, далее в автоматичекое создание по месту и т.п.
Ну и какой смысл в сишном коде? А привычка описывать переменные изначально она с досишных времен - у меня - с Фортарна.
Можно еще посмотреть спеки на КОБОЛ - там вообще все прозрачно.
кому то регионы сильно нравятся
-----
Кому-то они упрощают жизнь, кому-то, наоборот, усложняют.
Мне с ними - проще, но предыдущий шеф частенько тер пустые регионы в моем коде...
хрен его знает окедова...
вот именно, для того кто кода не знает...
Нужно знать что есть регион "расчет куку" и что данный метод нужно поместить именно туда. То бишь еще перемещать вручную после автогенерации - потеря времени.
Хотя... где-то в коде есть регионы Сериализация...
для меня это фиговый код, по определению. Для этого должен быть класс "сериализаторХхх" ну или метод расширение на крайняк.
Ну да ради бога - удобнее - делай так.
Так вопрос то не в этом. Как кому удобно - это субъективные причины. Меня интересуют объективные.
И для каждого файла нужно открывать все регионы.
-----Зачем?
Что бы понять какого файл делает. Вот я привел пример кода с "полезными" регионами. Можешь сказать без открытия регионов что делает данный файл?
но предыдущий шеф частенько тер пустые регионы в моем коде...
А зачем нужны пустые регионы в файле? Откуда они берутся и почему это понятно...
------
У меня - четыре региона задаются сразу.
Не факт, что в них что-то будет.
Но если будет - будет в них.
Меня интересуют объективные.
-----
Объективные - надо мерить. Причем - не на одном объекте...
перемещать вручную после автогенерации
-----
Да, тоже задалбывает.
Провда у меня есть куча типового кода, который правится по месту послe копи-пасты...
Нового - мало...
Можешь сказать без открытия регионов что делает данный файл?
-----
У себя - да, приблизительно смогу... но это - у себя...
А зачем нужны пустые регионы в файле?
ты не виляй, а прямо скажи
Откуда они берутся понятно. Зачем нужны "читателю" в настоящее время?
У себя - да, приблизительно смогу
Чисто по имени файла, как баба Ванга?
Какая полезная информация в том, что файл имеет поля, методы и проперти. Притом, еще что регион поля пустой
Чисто по имени файла
-----
Даже БЕЗ имени.
Просто как программист организовавший код понятным ему способом.
Зачем нужны "читателю" в настоящее время?
------
Дам программистский ответ:
Ну если считать основным и наиболее ответственным читалем компилятор - для обработки.