Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Region C# хорошо или плохо?

2003  1 2 3 4 5 6 7 8 все
AlexNek патриот28.05.19 00:01
AlexNek
28.05.19 00:01 

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

А у Вас какое мнение?


#1 
Программист коренной житель28.05.19 08:00
NEW 28.05.19 08:00 
в ответ AlexNek 28.05.19 00:01

Польза в регионах есть - ими очень удобно группировать код. Например, если класс имплементирует несколько интерфейсов - я всегда использую регионы. Иногда имеет смысл отделить приватные методы от публичных и/или проперти от методов. Несколько раз использовал даже вложенные регионы :)


Вместе с тем, делать их присутствие обязательным - глупость :)

#2 
Murr патриот28.05.19 11:09
Murr
NEW 28.05.19 11:09 
в ответ AlexNek 28.05.19 00:01

Но вот делать их присутствие обязательным?

-----

Обязательным - нет.

Но мне просто удобнее когда есть, скажем, # region Singleton

Не надо смотреть код - сразу понятно что там имплементация синглетона...

#3 
AlexNek патриот28.05.19 21:57
AlexNek
NEW 28.05.19 21:57 
в ответ Программист 28.05.19 08:00
очень удобно группировать код

Пока что все известные мне случаи группировки сводятся сводятся или к code smell или к ненужности. То есть субъективное желание человека понять как то можно, но вот объективных причин никак не нахожу.


если класс имплементирует несколько интерфейсов

прежде всего непонятно для чего группировать по имплементации интерфейса и чем в этом случае не нравятся partial классы?


приватные методы от публичных и/или проперти от методов

А смысл? Скорее всего чисто для того чтобы новые заносить в нужные регионы.

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


делать их присутствие обязательным - глупость

это то то меня и смущает. Постоянно открывать все регионы при просмотре файла можно еще как то привыкнуть, но писать и сортировать руками шок

#4 
AlexNek патриот28.05.19 22:00
AlexNek
NEW 28.05.19 22:00 
в ответ Murr 28.05.19 11:09
когда есть, скажем, # region Singleton

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

#5 
Программист коренной житель29.05.19 08:11
NEW 29.05.19 08:11 
в ответ AlexNek 28.05.19 21:57, Последний раз изменено 29.05.19 08:12 (Программист)
Пока что все известные мне случаи группировки сводятся сводятся или к code smell или к ненужности.

Ну это твой опыт. Вот пример из моей жизни:


И как мне кажется, region'ы тут использованы к месту :D


прежде всего непонятно для чего группировать по имплементации интерфейса и чем в этом случае не нравятся partial классы?

Это не всегда нужно :) Смотри приведенный пример. Выводить имплементацию IEnumerable и IEnumerator в partial было бы явным перебором. Разбивать на partial имеет смысл, когда есть какое-то сильное логическое отличие. Например, у меня было так, что один тип данных надо было по-разному сериализовать. Вот сериализацию я вынес в partial.



У меня для этого есть решарпер

Решарпер не поставляется вместе со студией и не является стандартом. В то время, что регионы - встроенная фича.


#6 
AlexNek патриот29.05.19 23:16
AlexNek
NEW 29.05.19 23:16 
в ответ Программист 29.05.19 08:11
Ну это твой опыт

безусловно, поэтому и интересует другое мнение.

Относительно примера, нужность регионов для меня спорная, больше сводимая к ненужности. Для нахождения ошибки или понятия как работает нужно регионы один фиг раскрывать.

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


Решарпер не поставляется вместе со студией и не является стандартом

Кому как, возможно поэтому я и не приемлю регионы, рефакторинг уже не срабатывает.


Я себе давно уже купил и нисколько не жалею. Лицензия на программиста, а не на комп.

#7 
  moose старожил04.06.19 15:25
NEW 04.06.19 15:25 
в ответ AlexNek 28.05.19 00:01
Как до сих пор считал, что никакой особой пользы от них нет. Можно конечно придумать ситуацию где будут полезны. Но вот делать их присутствие обязательным? шокА у Вас какое мнение?

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


#8 
AlexNek патриот04.06.19 20:57
AlexNek
NEW 04.06.19 20:57 
в ответ moose 04.06.19 15:25
когда коту нефер делать, он ...

Означает только то, что пока жареный петух Вас еще не клевал.

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

#9 
  moose старожил07.06.19 17:52
NEW 07.06.19 17:52 
в ответ AlexNek 04.06.19 20:57

каким образом? циркуляр издадут? будут проверять "наличие регионов" в коде? напишите "регионщик", и пусть он в код между методами вставляет "регион а", "регион б", ...

#10 
AlexNek патриот07.06.19 22:39
AlexNek
NEW 07.06.19 22:39 
в ответ moose 07.06.19 17:52
циркуляр издадут? будут проверять "наличие регионов" в коде

грубо говоря где то так.


напишите "регионщик"

не канает.


Но пока похоже отбился смущ

Хотя пришло некоторое понимание отчего некоторым енто может нравится.

#11 
  moose старожил08.06.19 01:28
NEW 08.06.19 01:28 
в ответ AlexNek 07.06.19 22:39

у меня, как упоминал, есть мнение о случаях полезности, но лучше "некоторое понимание" - в штудию! : )


#12 
AlexNek патриот08.06.19 11:45
AlexNek
NEW 08.06.19 11:45 
в ответ moose 08.06.19 01:28
но лучше "некоторое понимание" - в штудию!

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

Для начала две вещи которые я раньше не знал

-Ctrl/M L открывает все регионы в файле

-если навести курсор мыши на закрытый регион, то можно увидеть первые х-строк содержимого (где то 20-30 думаю)


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

Ну и если видишь группы типа этих то и искать проще и можно не обращать внимание на группы которые в данную минуту не нужны. А если что, то просто "мышку на регион".

"Кодирование строк"

"Кодирование региона"

"декодер"

"поля"

"публичные методы"


То есть в коде наводится дополнительный порядок. Зачем мне видеть часть "поиск символа" когда я и так наизусть знаю как он там ищется.

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

#13 
Murr патриот10.06.19 10:15
Murr
NEW 10.06.19 10:15 
в ответ AlexNek 08.06.19 11:45

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

------

Дошло? улыб

Ну а теперь прикинь что использование прописано в полиси.

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

Да, можно и в другой файл, но не всегда удобно...


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

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

Не привык пользоваться этой фичей Студии.

#14 
AlexNek патриот10.06.19 11:54
AlexNek
NEW 10.06.19 11:54 
в ответ Murr 10.06.19 10:15
Дошло?

неа смущ


Для меня быстрее найти метод в регионе, где он должен быть

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

А то какой смысл в таком файле

public class Abc
{
   Fields <- region
   Methods <- region
... }

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

#15 
Murr патриот10.06.19 13:17
Murr
NEW 10.06.19 13:17 
в ответ AlexNek 10.06.19 11:54
а мне откуда знать в каком регионе должен быть метод?

-----

Ну если полиси не читаешь и/или им не следуешь - хрен его знает окедова...


И какой метод вообще нужно искать?

-----

Не знаю. В плане регионов - понятия не имею.

Хотя... где-то в коде есть регионы Сериализация...

Об содержимом, надеюсь, догадаешься сам... смущ



И куда пихать новый метод?

Гораздо проще когда все автоматом, допустим по алфавиту упорядочено упорядочено.

------

Ну да ради бога - удобнее - делай так.



И для каждого файла нужно открывать все регионы.

-----

Зачем?

Мне вот при генерации было важно сгенерировался кусок или пролетел мимо.

Хочешь сказать что мне нужно открывать регионы если известно что кусок обернут регионом?

Содержимое меня как раз не интересует - ели есть - будет правильно...



А то какой смысл в таком файле

------

Помнится, в изначальных Сях была фича - декларировать переменные блока в начале блока.

Потом от нее долго и медленно отходили в сторону произвольного места декларации, далее в автоматичекое создание по месту и т.п.

Ну и какой смысл в сишном коде? А привычка описывать переменные изначально она с досишных времен - у меня - с Фортарна.

Можно еще посмотреть спеки на КОБОЛ - там вообще все прозрачно.



кому то регионы сильно нравятся

-----

Кому-то они упрощают жизнь, кому-то, наоборот, усложняют.

Мне с ними - проще, но предыдущий шеф частенько тер пустые регионы в моем коде...

#16 
AlexNek патриот10.06.19 13:45
AlexNek
NEW 10.06.19 13:45 
в ответ Murr 10.06.19 13:17
хрен его знает окедова...

вот именно, для того кто кода не знает...

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


Хотя... где-то в коде есть регионы Сериализация...

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


Ну да ради бога - удобнее - делай так.

Так вопрос то не в этом. Как кому удобно - это субъективные причины. Меня интересуют объективные.


И для каждого файла нужно открывать все регионы.
-----Зачем?

Что бы понять какого файл делает. Вот я привел пример кода с "полезными" регионами. Можешь сказать без открытия регионов что делает данный файл?


но предыдущий шеф частенько тер пустые регионы в моем коде...

А зачем нужны пустые регионы в файле? Откуда они берутся и почему это понятно...

#17 
Murr патриот10.06.19 13:58
Murr
NEW 10.06.19 13:58 
в ответ AlexNek 10.06.19 13:45
А зачем нужны пустые регионы в файле?

------

У меня - четыре региона задаются сразу.

Не факт, что в них что-то будет.

Но если будет - будет в них.


Меня интересуют объективные.

-----

Объективные - надо мерить. Причем - не на одном объекте...


перемещать вручную после автогенерации

-----

Да, тоже задалбывает.

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

Нового - мало...



Можешь сказать без открытия регионов что делает данный файл?

-----

У себя - да, приблизительно смогу... но это - у себя...

#18 
AlexNek патриот10.06.19 14:15
AlexNek
NEW 10.06.19 14:15 
в ответ Murr 10.06.19 13:58
А зачем нужны пустые регионы в файле?

ты не виляй, а прямо скажи спок

Откуда они берутся понятно. Зачем нужны "читателю" в настоящее время?


У себя - да, приблизительно смогу

Чисто по имени файла, как баба Ванга?

Какая полезная информация в том, что файл имеет поля, методы и проперти. Притом, еще что регион поля пустой смущ

#19 
Murr патриот10.06.19 15:18
Murr
NEW 10.06.19 15:18 
в ответ AlexNek 10.06.19 14:15

Чисто по имени файла

-----

Даже БЕЗ имени.

Просто как программист организовавший код понятным ему способом. смущ



Зачем нужны "читателю" в настоящее время?

------

Дам программистский ответ:

Ну если считать основным и наиболее ответственным читалем компилятор - для обработки.

#20 
AlexNek патриот10.06.19 15:31
AlexNek
NEW 10.06.19 15:31 
в ответ Murr 10.06.19 15:18
Ну если считать основным и наиболее ответственным читалем компилятор

странные у тебя понятия о читателях шок

Да компилятору вообще пофиг как код оформлен или у тебя другой компилятор? смущ

#21 
Murr патриот10.06.19 15:36
Murr
NEW 10.06.19 15:36 
в ответ AlexNek 10.06.19 15:31
компилятору вообще пофиг

------

Эээ... если действительно пофиг - сделай незакрытый регион... ну ил8и закрой не открытый...

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

#22 
AlexNek патриот10.06.19 16:26
AlexNek
NEW 10.06.19 16:26 
в ответ Murr 10.06.19 15:36
компилятору вообще пофиг как код оформлен

А полностью прочитать лень спок

Его волнует только правильный синтакс.

Возьми запиши в регионы "поля" функции - получишь хоть предупреждение ?смущ


#23 
Murr патриот10.06.19 17:19
Murr
NEW 10.06.19 17:19 
в ответ AlexNek 10.06.19 16:26

получишь хоть предупреждение ?

-----

Избаловал тебя решарпер.

Что ты будешь делать, когда его разработчики научат его понимать регионы?


Ну нет у меня решарпера. Нету. Потому - поддерживаю код руками - регионы мне в этом помогают...

Не спорю - могут и сильно - если их втыкать от балды - мешать...

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


П.С. Воткнуть дополнительную обработку текста описания региона с распознаванием некоторого набора слов - не слишком сложно - и будет тебе варнинг...

#24 
AlexNek патриот10.06.19 19:05
AlexNek
NEW 10.06.19 19:05 
в ответ Murr 10.06.19 17:19
Но код, корректно организованный регионами, понимать легче...

Ага... нашли плюс, другие говорили читать легче.

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

Пожалуй можно начинать составлять таблицу + и -

#25 
Murr патриот11.06.19 10:08
Murr
NEW 11.06.19 10:08 
в ответ AlexNek 10.06.19 19:05, Последний раз изменено 11.06.19 10:10 (Murr)

Вот тебе еще один аргумент за использование регионов.

В тестах. Когда одини и те же методы дергаются с разными рараметрами.

Сгруппировав это безобразие в регион можно упростить восприятие даже не кода, а уровня покрытия тестами.

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


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

-----

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

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

По поводу остальных - ну что толку от регионов... бухгалтеру? Для него что с регионами, что без оных - галиматья из непонятных буковок... Аx, да - с регионами буковок больше...

#26 
Программист коренной житель11.06.19 13:10
NEW 11.06.19 13:10 
в ответ AlexNek 10.06.19 11:54
Видишь, для тебя, а мне откуда знать в каком регионе должен быть метод?
У меня для этого есть решарпер который все автоматом сортирует как хочется.

:D :D :D

#27 
Tamachi постоялец15.06.19 17:10
NEW 15.06.19 17:10 
в ответ AlexNek 10.06.19 11:54

Я не пишу на с#, но регионы использую. Большинство текстовых редакторов их поддерживают.


#28 
AlexNek патриот16.06.19 00:26
AlexNek
NEW 16.06.19 00:26 
в ответ Tamachi 15.06.19 17:10
но регионы использую

А по каким причинам?

#29 
Tamachi постоялец16.06.19 08:13
NEW 16.06.19 08:13 
в ответ AlexNek 16.06.19 00:26

Удобно. Можно метить код.

Впрочем не-код тоже можно метить.


Вот, пишу себе список того, что надо купить.

Регионами отмечаю места покупок: аптека, пятерочка, космос и пр...


Фишка в том, что регионы поддерживпются большинством моих текстовых редакторов.

Всякие монстры типа Microsoft Word, Excel, OpenOffice, LibreOffice я не использую.


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


#30 
AlexNek патриот16.06.19 13:14
AlexNek
NEW 16.06.19 13:14 
в ответ Tamachi 16.06.19 08:13
Удобно

но это субъективный критерий, который зависит от конкретного человека. Я в поисках объективных критериев. Есть конкретные примеры?


Вот, пишу себе список того, что надо купить.Регионами отмечаю места покупок: аптека, пятерочка, космос и пр...

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

А так получается, если что вспомнил нужно вписать в нужный регион, а если в двух местах можно купить, тогда как?


Фишка в том, что регионы поддерживаются большинством моих текстовых редакторов.

Тут для меня две странности:

1. Не могу себе представить программирование в текстовом редакторе. Ну типа как на лошади ездить вместо авто.

2. Ни разу не было редактора с данной возможностью. Хотя есть только Notepad++... Ага он поддерживает их, если язык указать.

#31 
anly коренной житель16.06.19 15:08
anly
NEW 16.06.19 15:08 
в ответ AlexNek 28.05.19 00:01
Как до сих пор считал, что никакой особой пользы от них нет. Можно конечно придумать ситуацию где будут полезны. Но вот делать их присутствие обязательным? шок А у Вас какое мнение?
мое мнение что "обязательным" тоже можно сделать, ибо регионы относятся к тому же что и "форматирование текста". Ну типа Табы или Пробелы, фигурную скобку на новой строке обязательно или нет, пробел после запятой делать или нет и подобному...

Т.е. это решение собрания коллег по согласию или желанию начальника, которое "обязательно".

Проклят нарушающий межи ближнего своего (Втор.27:17)
#32 
anly коренной житель16.06.19 15:22
anly
NEW 16.06.19 15:22 
в ответ AlexNek 28.05.19 21:57
чем в этом случае не нравятся partial классы?
пратиал классы вносят небольшой недостаток: не все методы, проперти локализованны в одном файле. Это мелочь, но бывает потратишь лишнюю минуту для поиска чего. В си=плюсах хоть заголовок от этого спасал.

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

Проклят нарушающий межи ближнего своего (Втор.27:17)
#33 
AlexNek патриот16.06.19 17:01
AlexNek
NEW 16.06.19 17:01 
в ответ anly 16.06.19 15:08
ибо регионы относятся к тому же что и "форматирование текста".

Ну с этим можно видимо до бесконечности спорить и не прийти к согласию.

class Abcd
{
+   [Fields]
}

ну вот вижу я например такой текст после открытия файла. Какую полезную информацию он мне несёт? И сокрытие некой части информации никак нельзя отнести просто к обычному форматированию текста.

Ладно можно еще как то понять когда один человек пусть и в команде "владеет" долго какой то частью кода.

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


#34 
AlexNek патриот16.06.19 17:10
AlexNek
NEW 16.06.19 17:10 
в ответ anly 16.06.19 15:22
партиал классы вносят небольшой недостаток: не все методы, проперти локализованны в одном файле.

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

Обычно я просто пишу имя, а после просто генерирую поле автоматом. В случае с регионами нужно переместить после поле в нужное место.

#35 
anly коренной житель16.06.19 18:57
anly
NEW 16.06.19 18:57 
в ответ AlexNek 16.06.19 17:10
В случае с регионами нужно переместить после поле в нужное место.

лично я регионами не увлекаюсь. Но всё равно перед тем как сделать новое проперти или функцию - ищу "нужное место".

Проклят нарушающий межи ближнего своего (Втор.27:17)
#36 
Tamachi постоялец16.06.19 20:09
NEW 16.06.19 20:09 
в ответ AlexNek 16.06.19 13:14

Notepad++ понимает регионы.

Но я под Windows уже оооочень давно не работаю. Уже забыл как она выглядит. Работаю и живу под AstraLinux.

В качестве редактора кода испольщую Geany или CLion.

Но не только в Source code использую region.

В обычных блокнотных текстах тоже очень катит.

#37 
AlexNek патриот16.06.19 20:28
AlexNek
NEW 16.06.19 20:28 
в ответ anly 16.06.19 18:57
Но всё равно перед тем как сделать новое проперти или функцию - ищу "нужное место".

А смысл? Поля "у меня" в начале класса, проперти в конце (все проперти с "полями"). Решарпер еще автоматом по имени сортирует. То есть сделал, что новое и забыл, еще иногда код также автоматом переформатируется.

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

#38 
AlexNek патриот16.06.19 20:31
AlexNek
NEW 16.06.19 20:31 
в ответ Tamachi 16.06.19 20:09
Notepad++ понимает регионы.

Да это я уже нашел, нужно только указать язык "с регионами".


Работаю и живу под AstraLinux

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

#39 
Tamachi постоялец16.06.19 20:41
NEW 16.06.19 20:41 
в ответ AlexNek 16.06.19 20:31

AstraLinux имеет классный графический интерфейс, значительно более интуитивный чем рабочий стол Windows.


#40 
anly коренной житель16.06.19 21:02
anly
NEW 16.06.19 21:02 
в ответ AlexNek 16.06.19 20:28
А смысл? Поля "у меня" в начале класса, проперти в конце (все проперти с "полями"). Решарпер еще автоматом по имени сортирует.
поля я тоже стараюсь в начале класса, за редкими исключениями. Ну группу функций которые связаны вызовами (одна вызывает другую, та третью) стараюсь держать рядом.

Особого смысла нет, но не меньше чем в алфавитной сортировке :). Это сортировка "по темам" получается.

Проклят нарушающий межи ближнего своего (Втор.27:17)
#41 
dArtagnan знакомое лицо16.06.19 21:16
dArtagnan
NEW 16.06.19 21:16 
в ответ Tamachi 16.06.19 20:41

А по-моему, это просто тупая реклама ничем не примечательного (в "общенародной" версии) дебианового клона из Расеи. Фишки же специальной версии обывателю на фиг не упали. С другой стороны, после феерической залепы данного товарища по поводу GPS я уже ничему не удивляюсь...

#42 
AlexNek патриот16.06.19 21:27
AlexNek
NEW 16.06.19 21:27 
в ответ anly 16.06.19 21:02
Ну группу функций которые связаны вызовами (одна вызывает другую, та третью) стараюсь держать рядом

Это может быть удобно когда все один делаешь и не очень сложные классы.

А так постепенно всё разрастается в полный бардак. Согласен что особого смысла сортировки по типу доступа и алфавиту нет, но зато все можно сделать на полном автомате и все понятно без особых объяснений.

#43 
AlexNek патриот16.06.19 21:29
AlexNek
NEW 16.06.19 21:29 
в ответ Tamachi 16.06.19 20:41
AstraLinux имеет классный графический интерфейс

Ну сейчас вероятно у всех никсов есть, но когда нужно было делать выбор этого не было.

Да и дело не только в системе но и сопутствующих прогах.

#44 
Murr патриот17.06.19 11:06
Murr
NEW 17.06.19 11:06 
в ответ AlexNek 16.06.19 13:14

1. Не могу себе представить программирование в текстовом редакторе.

------

Регулярно пользуюсь.

Плохо представляю редактирование в пакетном режиме в современных условиях. безум



2. Ни разу не было редактора с данной возможностью.

------

А текстовый редактор с возможностями колоночного редактирования назвать сможешь? смущ

А с возможностью одновременного редактирования двух разных частей одно и того же файла? спок



Ну типа как на лошади ездить вместо авто.

------

Угу... Только вот по горной тропке лошадка проходит, а машинка как-то не способна...


#45 
Murr патриот17.06.19 11:13
Murr
NEW 17.06.19 11:13 
в ответ AlexNek 16.06.19 17:01

Какую полезную информацию он мне несёт?

-----

А какая информация тебе нужна?

Есть таблица, есть релевантный для нее представления бин.

Соответственно, в регионе у тебя лежат переменные под поля таблицы.

Все 300 штук. Ты будешь проматывать эти (7-10)х300 строк или будешь доволен их упаковкой в регион?


Но делать их использование обязательным для каждого файла мне кажется большой ошибкой.

-----

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


#46 
Murr патриот17.06.19 11:18
Murr
NEW 17.06.19 11:18 
в ответ AlexNek 16.06.19 21:27

и все понятно без особых объяснений.

------

Понятен - принцип сортировки.

Функциональнось класса - понять более проблемно, чем когда она описана регионами.


А так постепенно всё разрастается в полный бардак.

-----

Имей полиси и требуй их выполнения - бардака не будет.


#47 
AlexNek патриот17.06.19 22:28
AlexNek
NEW 17.06.19 22:28 
в ответ Murr 17.06.19 11:06
Плохо представляю редактирование в пакетном режиме в современных условиях.

а при чём здесь пакетный режим. Зачем мне функции просто редактора? IDE требуется хорошее. При том что даже VS Code не хочется.


А текстовый редактор с возможностями колоночного редактирования назвать сможешь?

нафига?


Только вот по горной тропке лошадка проходит, а машинка как-то не способна...

А если работается исключительно на равнине смущ

#48 
AlexNek патриот17.06.19 22:37
AlexNek
NEW 17.06.19 22:37 
в ответ Murr 17.06.19 11:13
Соответственно, в регионе у тебя лежат переменные под поля таблицы.Все 300 штук

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

Да и с какого бодуна мне анализировать POCO файлы?

#49 
AlexNek патриот17.06.19 22:51
AlexNek
NEW 17.06.19 22:51 
в ответ Murr 17.06.19 11:18
Функциональнось класса - понять более проблемно, чем когда она описана регионами.

В идеальном случае да. А в практическом фигвам.

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

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

Публичные функции также пришлось искать поиском, а не просто в начале и т.п.


Имей полиси и требуй их выполнения - бардака не будет.

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

#50 
Murr патриот18.06.19 11:11
Murr
NEW 18.06.19 11:11 
в ответ AlexNek 17.06.19 22:37

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

------

А есть разница? По мне так лучше бардачный порядок, порядочный бардак.

Т.е. если оно есть хоть где-то - однообразное оформление кода облегчит работу с ним.


Да и с какого бодуна мне анализировать POCO файлы?

-----

Да хрен тебя знает. Просил пример - привел пример. Теперь спрашивается - кому пример...

#51 
Murr патриот18.06.19 11:22
Murr
NEW 18.06.19 11:22 
в ответ AlexNek 17.06.19 22:51

А там оказалось столько мусора накидано

------

Ну и причем тут регион как таковой?

Есть регион Конструктор. По идее - должен быть в начале, после Локальные Переменные, и содержать конструкторы (и, возможно, приватные методы, вызываемые исключительно из конструкторов).

Каким образом помещение его в конце и набивка мусором влияет на сам регион? Переименуй его в Мусор Разный и успокойся...


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

-----

Тебе какую солонку - "Ни куя себе!" или "Ай, еп сию мать!"?

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

Когда в коде бардак - там ничего не поможет. Тогда - да, проще иметь методы в алфавитном порядке и без враппинга регионами.

Но не у всех же бардак в коде...



на бесполезные вещи

-----

Ну бесполезные для тебя - не пользуйся.

Повторюсь - мне удобнее с регионами.

#52 
AlexNek патриот18.06.19 23:23
AlexNek
NEW 18.06.19 23:23 
в ответ Murr 18.06.19 11:11
однообразное оформление кода облегчит работу с ним.

Во именно так, да и еще на автомате.


Просил пример - привел пример

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

Но мне получается так, если уж понадобилось смотреть в такой файл, то какой смысл в том, что я увижу там одно слово "поля". Не проще ли сразу все поля увидеть?

#53 
AlexNek патриот18.06.19 23:31
AlexNek
NEW 18.06.19 23:31 
в ответ Murr 18.06.19 11:22
Каким образом помещение его в конце и набивка мусором влияет на сам регион? Переименуй его в Мусор Разный

начнём с того что конструктор ожидается где то в начале. Затем, видя название региона я ожидаю там увидеть определенные вещи и поэтому могу и не открыть его.

А какой смысл в переименовании? Какой смысл в данном регионе? Выкинул просто весь мусор из данного региона.


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

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

#54 
Murr патриот19.06.19 10:43
Murr
NEW 19.06.19 10:43 
в ответ AlexNek 18.06.19 23:23
Не проще ли сразу все поля увидеть?

-----

Все 3000-5000 строк разом? хаха

Или ты думаешь, что аттрибуты и доки совершенно не нужны? Даже для WCF...

А еще ведь есть и индексы по группам полей... Будешь сортировать по (???) ?


Как то давно генерили код. Много кода.

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

Ну и как? Отсортируем и будем разбираться?

Или все же найдем регион с нужным кодом и поковыряем его?

#55 
Murr патриот19.06.19 10:49
Murr
NEW 19.06.19 10:49 
в ответ AlexNek 18.06.19 23:31

начнём с того что конструктор ожидается где то в начале.

-----

В начале чего? И кем/чем ожидается?

По спекам - в любом месте... даже в другой части паршил класса.


Какой смысл в данном регионе?

-----

Не надо солодить чай перцем из пачки с названием соль.


Если у тебя не умеют поддерживать порядок в коде - ну у тебя не умеют. Это локальная проблема по квалификации персонала.

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

#56 
AlexNek патриот19.06.19 23:31
AlexNek
NEW 19.06.19 23:31 
в ответ Murr 19.06.19 10:43
Все 3000-5000 строк разом? хаха

батенька, не надо всё интерпретировать буквально спок

Если есть класс только с одними полями, то зачем мне их еще и раскрывать.


А еще ведь есть и индексы по группам полей...

Да у тебя там всё не так у "людей". Не было у меня никогда в POCO классах ни атрибутов не индексов, как и кодогенерации.

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

#57 
Murr патриот20.06.19 11:08
Murr
NEW 20.06.19 11:08 
в ответ AlexNek 19.06.19 23:31
то зачем мне их еще и раскрывать

-----

т.е. регион, как таковой, ДОЛЖЕН присутствовать? ЧТД... безум


Не было у меня никогда

------

У - тебя. безум

А структура кода должна оставаться унифицированной.


#58 
AlexNek патриот21.06.19 21:48
AlexNek
NEW 21.06.19 21:48 
в ответ Murr 20.06.19 11:08
т.е. регион, как таковой, ДОЛЖЕН присутствовать?

Как это я мог такое даже подумать? смущ


А структура кода должна оставаться унифицированной.

Так она и остается... у меня спок

#59 
Murr патриот23.06.19 00:16
Murr
NEW 23.06.19 00:16 
в ответ AlexNek 21.06.19 21:48

Ну без регионов - значит без регионов.

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

Не пользуешься - не надо.

#60 
AlexNek патриот23.06.19 12:41
AlexNek
NEW 23.06.19 12:41 
в ответ Murr 23.06.19 00:16
тебе говорят, что от их использования при определенных условиях имеются несомненные плюсы

согласен, только вот еще нужно найти эти условия в моем окружении спок

#61 
Murr_0002 знакомое лицо04.07.19 15:32
Murr_0002
NEW 04.07.19 15:32 
в ответ AlexNek 23.06.19 12:41

Сегодня нашел еще один аргумент.


Подчищаю либы в свете последних изменению в подсистеме получения данных.


Кода - много.

Исправлений - много. Исправления - многослойные.

Т.е. есть с десяток редакций кода и файлы в разной степени готовности.

Что-то - правлю по минимуму, что-то подгоняю под последние веяния.


Во множестве мест есть инициализация структуры ДатаТабле.

Там - не сложно - выделено в функцию:

- переменная типа ДатаКолумн инициализируется определением колонки

- из переменных формируется массив и разом добавляется к Колумнс таблицы.


Две вещи не устраивают.

1. помещение определения колонки в переменную занимает лишнее время. тесты говорят - существенное.

2. Доступ по имени поля к значению поля в ДатаРов - не самый быстрый - надо индексировать ДатаКолумом.


Не сегодня Я не готов передлать обе вещи.

Переделываю только 1-ю.


Для второй - нужно иметь определения колонок в теле класса.

Но заниматься их использованием для индексации Я сейчас не буду.

Но делать когда-то надо будет. Сейчас - делаю часть подготовки:

- копи-пасте инициализации переменной,

- в полученном куске убирается все лишнее

- кусок помещается в регион

- внутреннее содержимое региона комментится


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


#62 
AlexNek патриот05.07.19 00:00
AlexNek
NEW 05.07.19 00:00 
в ответ Murr_0002 04.07.19 15:32
внутреннее содержимое региона комментится

Если я вижу подобное - убираю немедленно, явно мусор.


Пришлось дебажить код любителя регионов - жуть. Стоишь как перед пропастью.

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


#63 
Murr_0002 знакомое лицо05.07.19 09:42
Murr_0002
NEW 05.07.19 09:42 
в ответ AlexNek 05.07.19 00:00

убираю немедленно, явно мусор

------

Ну да, ну да - задел на будущее - явный мусор.

Ну потом вместо нынешнего копи-паста будет набор ручками... все 700-800 таблиц-классов... хотя... тут еще смена версии - еще плюс 1200-1300 таблиц-классов...

#64 
AlexNek патриот05.07.19 21:46
AlexNek
NEW 05.07.19 21:46 
в ответ Murr_0002 05.07.19 09:42
Ну да, ну да - задел на будущее - явный мусор.

Мы просто с разных позиций на это смотрим.

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

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

#65 
MrSanders старожил07.07.19 17:08
NEW 07.07.19 17:08 
в ответ AlexNek 05.07.19 21:46
Нет задач типа "прибрать в коде", значит никто этого делать и не будет.

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

ПО практически никогда не заинтересован в "качестве кода". Две наиболее часто используемые возможности для команды что-то сделать:

1. капать на мозги ПО на каждом рефайнменте и говорить что эту историю можно было бы сделать на 10-20-30-50 процентов быстрее, если почистить код, выбивать себе техническую задачу на рефакторинг.

2. ввести в свой DOD пару правил, вроде "все классы/методы измененные при обработке истории должны соответствовать требованиям для нового кода. Старый код должен быть исправлен."

#66 
AlexNek патриот07.07.19 22:16
AlexNek
NEW 07.07.19 22:16 
в ответ MrSanders 07.07.19 17:08
Значит такая вот у вас "команда"

Вполне возможно что и так, только проблема мне видится гораздо шире.

Вот например, есть файл/класс тысячи так на 3 строк с "большими" регионами внутри, ну или пяток классов в одном файле. Хорошо это или плохо? Ускорится ли производительность разработчиков после того как разнесем регионы или классы в разные файлы? Думаю что до 10% точно не ускорится. Ну или имя класса/намеспасе/функции не правильное.

Сделали исправления, закинули на сервер, на и тут началось... Оказывается есть ветки где правился оригинальный файл и теперь народ просто не может их смержить автоматом, нужно делать всё вручную. А это лишняя потеря времени, а не экономия. Тут то тебя все на дейли и обматерят. Больше уже ни ты ни другие никакого рефакторинга не захотят. смущ


#67 
MrSanders старожил08.07.19 00:39
NEW 08.07.19 00:39 
в ответ AlexNek 07.07.19 22:16

Не думаю что вам проблема видится шире. Скорее она вам как обычно видится чересчур узко - через призму "я так привык, мне так удобно".

Хорошо это или плохо?

Отвратительно. И на одни грабли вы уже наступили лично. Но не заметили. Шанс на то, что один и тот же файл будут править в двух ветках (получая конфликты) понижается, если в нём не будет 3000 строк и 5 классов. Ну а если класс один, то тоже стоит постараться разнести. Разбираться в классе с 3000 строк намного веселее чем в классе с 500 строками. Про кратковременную память и от 5 до 9 объектов слышали?

Ну или имя класса/намеспасе/функции не правильное.

Правильное (соответствующее содержанию) имя класса/функции может ускорить разработку и на 1000%. Вместо 4 часов поисков и выяснений "а почему эта функция называется 'сложитьЧисла' а на самом деле она их перемножает", код правится за 5 минут.


Что за боязнь "мержить вручную"? Две минуты потерять? Или классы настолько загажены, что в них строки по 2 тысячи символов и вообще ничего не понятно?

А что за vcs? В git-е таких проблем нет. Переименуете файл и класс внутри в одной ветке, в другой правите содержимое класса, всё смёржится автоматом.

Больше уже ни ты ни другие никакого рефакторинга не захотят.

Ну, повторюсь, вот такая у вас команда. Которая не умеет мёржить, боится переименовывать и лучше поковыряется в коде с непонятными именами. Вас в Ирландии один завод ждёт :)

Но если вам так удобнее, то кому какое дело - работайте так.

#68 
Murr_0002 знакомое лицо08.07.19 09:55
Murr_0002
NEW 08.07.19 09:55 
в ответ AlexNek 05.07.19 21:46

Ты как единственный разработчик, а я как член команды

-----

Извини - не понимаю команду, но могу понять членов...


Когда-то была большая проблема в команде - все писали и никто не хотел отвечать за им же написанный код.

Типа как у вас - получил задание - написал - закинул в СВН/ГИТ/ВСС и... в кассу...

Когда дошло до предела - решили просто - версия в СВН - основная - должна компилятся по выборке.

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

#69 
Murr_0002 знакомое лицо08.07.19 09:58
Murr_0002
NEW 08.07.19 09:58 
в ответ AlexNek 07.07.19 22:16

Больше уже ни ты ни другие никакого рефакторинга не захотят.

-----

Значит - не критично.

Остальное - решается полисом - если есть изначальное требование класс-файл - то оно и должно соблюдаться. Изначально. И всеми.

#70 
AlexNek патриот08.07.19 23:41
AlexNek
NEW 08.07.19 23:41 
в ответ MrSanders 08.07.19 00:39
И на одни грабли вы уже наступили лично. Но не заметили...если в нём не будет 3000 строк и 5 классов.

про плохое наследство слышали? Что дали то и везем. смущ


Что за боязнь "мержить вручную"?

в две минуты никак не укладывается. С одной стороны АБС, с другой АС, какая сторона правильная? При этом АБС например в строке 50, а АС в строке 250 вместе функцией.


В git-е таких проблем нет

Написать описания шагов для гарантированного получения проблемы? смущ


Ну, повторюсь, вот такая у вас команда

Решения? С текущим составом....

#71 
AlexNek патриот08.07.19 23:42
AlexNek
NEW 08.07.19 23:42 
в ответ Murr_0002 08.07.19 09:55
версия в СВН - основная - должна компилятся по выборке.

Это как?


и чужой код не трогать.

А если везде куда ни глянешь чужой код?

#72 
AlexNek патриот08.07.19 23:46
AlexNek
NEW 08.07.19 23:46 
в ответ Murr_0002 08.07.19 09:58
то оно и должно соблюдаться. Изначально.

Фиг его знает что там было изначально. Во всяком случае так есть.


Вот еще выделилась подобная тема

"Type" vs "var" спок

#73 
Murr_0002 знакомое лицо09.07.19 09:54
Murr_0002
NEW 09.07.19 09:54 
в ответ AlexNek 08.07.19 23:42

Это как?

-----

Голая машина. Чекоут. Компиляция. Звиздюля зачекинившему неработающий код.


А если везде куда ни глянешь чужой код?

------

А это что-то меняет? Комментишь, до релиза, что было и пишешь что задано. Важно чтобы можно было найти твое...

#74 
MrSanders старожил09.07.19 12:37
NEW 09.07.19 12:37 
в ответ AlexNek 08.07.19 23:41
про плохое наследство слышали? Что дали то и везем.

Приходилось, да. "Это моя профессиональная обязанность... Професьон де фуа!" (с) Только задача у меня другая. Что дали то и исправляю. Без мержебоязьни. Вот, в прошлом тикете заменил в интерфейсе (и соответственно всех имплементациях) гуавовский optional на java.util.Optional. Пара конфликтов при мерже решилась за минуту. Никаких проблем.

в две минуты никак не укладывается. С одной стороны АБС, с другой АС, какая сторона правильная? При этом АБС например в строке 50, а АС в строке 250 вместе функцией.

Какой вариант "правильный" надо решать поговорим с другим разработчиком. В первый раз в 2 минуты не уложитесь, не страшно, научитесь. Потом быстрее будет.

То что в одном месте AБС а в другом АБ во-первых не даёт автоматом мёрж конфликта, во-вторых заставляет двух разработчиков поговорить друг с другом, а в третьих вообще может быть правильно.

Написать описания шагов для гарантированного получения проблемы?

Если хотите, да. Так то изменения в строке 50 и 250 мержатся без конфликтов (но могут привести к некомпилируемомоу коду, да)

Решения? С текущим составом....

Повторюсь: "Но если вам так удобнее, то кому какое дело - работайте так."

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

#75 
Murr_0002 знакомое лицо09.07.19 13:14
Murr_0002
NEW 09.07.19 13:14 
в ответ AlexNek 08.07.19 23:46

"Type" vs "var"

-----

Да нет этой темы. Есть хуливара на тему. А темы - нету.

"Тыпе" - сразу понятно какая функциональность доступна. Ошибки времени компиляции.

"Вара" - фиг его знает что там, но должно работать. Ошибки времени выполнения.

Ошибки времени выполнения меня не устраивают - будет строгая типизация. Все.

#76 
AlexNek патриот09.07.19 23:47
AlexNek
NEW 09.07.19 23:47 
в ответ Murr_0002 09.07.19 09:54
Звиздюля зачекинившему неработающий код

А определение неработающего кода мона?смущ


Важно чтобы можно было найти твое...

если из if(A && B) делаем if(A && B && C) то моё это "С" или "&& C"? бебе

#77 
AlexNek патриот09.07.19 23:50
AlexNek
NEW 09.07.19 23:50 
в ответ Murr_0002 09.07.19 13:14
А темы - нету.

это у тебя нету. А тута буквально сегодня поймал чела заменившего в целом файле type на var - а так лучше читается.

#78 
AlexNek патриот10.07.19 00:03
AlexNek
NEW 10.07.19 00:03 
в ответ MrSanders 09.07.19 12:37
Какой вариант "правильный" надо решать поговорим с другим разработчиком.

А с каким именно, как его быстро найти? И это не пара человек в одном офисе.


Только задача у меня другая. Что дали то и исправляю.

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


Если хотите, да.

пока по быстрому, что идея была понятна

file1

f1()

{

a+b

}


f2()

{

a*b

}


file2

f2()

{

a*b*c

}

FuncA()

{

...

}


f1()

{

a+b-1

}



#79 
Ashka_hash46 патриот10.07.19 08:45
Ashka_hash46
NEW 10.07.19 08:45 
в ответ AlexNek 10.07.19 00:03

Вот жеж...


От предыдущего разработчика мне, единственной в проекте, достались эти регионы. Решарпера нет (да что уж там, даже лицензию на меня приобрести пожмотились). Так вот, я сперва от этих регионов тоже плевалась, ибо понять логику - это пройти пошагово код, и тут постоянные "внезапно открывающиеся регионы" и вопрос в голове "откуда это?!?!". Но за год настолько привыкла к этим регионам, что только прочитав тему, вспомнила, что можно же еще и партиал классы использовать. Сейчас уже не возникает проблем, "где что искать" и "куда пихать новую функцию". Даже автоматически сгенерированные не влом перетаскивать в "привычный" регион!)))


Но если б это была обязаловкой, я б тоже, мягко говоря, удивилась :)

Общественное мнение формируют не самые умные, а самые болтливые
#80 
Программист коренной житель10.07.19 09:02
NEW 10.07.19 09:02 
в ответ Ashka_hash46 10.07.19 08:45

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

#81 
Ashka_hash46 патриот10.07.19 09:10
Ashka_hash46
NEW 10.07.19 09:10 
в ответ Программист 10.07.19 09:02

Да я ж, как раз, согласна)))) Мне удобно, потому что привычно)))

Общественное мнение формируют не самые умные, а самые болтливые
#82 
Murr_0002 знакомое лицо10.07.19 09:45
Murr_0002
NEW 10.07.19 09:45 
в ответ AlexNek 09.07.19 23:47, Последний раз изменено 10.07.19 09:46 (Murr_0002)

А определение неработающего кода мона?

-----

Ну за что награды раздают - то и есть...


то моё это "С" или "&& C"

-----

Звездюлину за это получил? Если нет - пофиг чье...

#83 
Murr_0002 знакомое лицо10.07.19 09:47
Murr_0002
NEW 10.07.19 09:47 
в ответ AlexNek 09.07.19 23:50

буквально сегодня поймал чела

-----

Ну так в полиси носом ткнул, награды выдал - пусть дальше пашет...

#84 
MrSanders старожил10.07.19 12:43
NEW 10.07.19 12:43 
в ответ AlexNek 10.07.19 00:03
А с каким именно, как его быстро найти? И это не пара человек в одном офисе.

Ну, с тем кто внёс изменения, которые приводят к мёрж конфликту. Смотрим какой коммит последним менял строку, смотрим автора коммита. Профит.

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

1. Поговорил 2. Запретил ему мёржить в мастер (другие могут замёржить его ветку после ревью, приват свой код пока ревьюер не будет доволен). 3. Убрал из команды 4. Уволил

пока по быстрому, что идея была понятна

Ааа.. Понял. Жертва решарпера. А не надо код во всём файле пересортировывать, если 2 строчки меняете. С точки зрения гита вы поменяли не "50-ю и 250-ю строку" а "все строки с 1 по 3.000" Keep your changes small and comprehensible.

#85 
Программист коренной житель10.07.19 14:03
NEW 10.07.19 14:03 
в ответ AlexNek 10.07.19 00:03
пока по быстрому, что идея была понятна

1) у тебя изменены все строчки, кроме фигурных скобок

2) кто и зачем менять порядок функции?

3) даже такое изменение можно сравнительно легко замерджить BeyondCompare'ом :) странно, что вы разорились на решарпер и не разорились на действительно полезное приложение :)

#86 
AlexNek патриот11.07.19 22:02
AlexNek
NEW 11.07.19 22:02 
в ответ Ashka_hash46 10.07.19 08:45
Но за год настолько привыкла к этим регионам

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

У него каждый log.Debug обвернут в регион и почти каждая функция,... в которой еще по несколько регионов. Брр.


да что уж там, даже лицензию на меня приобрести пожмотились

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

Купил персональную лицензию. На все тулзы лицензия на разработчика+коммерческое использование.

#87 
AlexNek патриот11.07.19 22:09
AlexNek
NEW 11.07.19 22:09 
в ответ Программист 10.07.19 09:02
Я думаю, что партиал не может быть заменой регионам

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

Теперь просто открываешь нужный файл и делаешь все что хочешь, при этом всё видно прямо в дереве солюшина, какие есть "регионы".

#88 
AlexNek патриот11.07.19 22:18
AlexNek
NEW 11.07.19 22:18 
в ответ MrSanders 10.07.19 12:43
Смотрим какой коммит последним менял строку

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


1,2,3,4...

ну и кто захочет иметь подобные проблемы, чтобы делать всё "правильно"?


Жертва решарпера

отчего именно жертва? В "правильном" коде таких проблем не возникнет. Это проблема первого прохода, когда везде бардак.

Да даже и вручную такое может быть когда начинаешь существующие регионы анализировать.


#89 
AlexNek патриот11.07.19 22:20
AlexNek
NEW 11.07.19 22:20 
в ответ Программист 10.07.19 14:03
даже такое изменение можно сравнительно легко замерджить BeyondCompare'ом

Может научите как, если таких функций не 2 смущ

и кто сказал что его нету?

#90 
anly коренной житель11.07.19 23:11
anly
NEW 11.07.19 23:11 
в ответ AlexNek 11.07.19 22:02, Последний раз изменено 11.07.19 23:23 (anly)
функция,... в которой еще по несколько регионов. Брр.
ну это уже перебор. Меня "бог миловал" - ни разу не видел чтоб внутри функции регионы были.

Наверно это делают те что не любят функции и в результате они у них функция в 10000 строк разбитых на регионы.

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

Проклят нарушающий межи ближнего своего (Втор.27:17)
#91 
AlexNek патриот11.07.19 23:40
AlexNek
NEW 11.07.19 23:40 
в ответ anly 11.07.19 23:11
ни разу не видел чтоб внутри функции регионы были.

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

Но сразу отстал, как понял что я не любитель сего дела.

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

Да вот, в начале функции лог и в конце лог и оба в регионах. Похоже у него регионы вместо комментариев.

#92 
anly коренной житель11.07.19 23:58
anly
NEW 11.07.19 23:58 
в ответ AlexNek 11.07.19 23:40, Последний раз изменено 12.07.19 00:18 (anly)
потому как он мне тоже регионы сиильно предлагал.
видимо это мышление такое.

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

Мне конечно такой код представляется не мобильным. Но может только потому что у меня другое мышление?...

....

У меня на работе есть один милый коллега (весьма приятный человек, итальянец). Но функции пишет в 10000 строк. Правда и мобильным его не назовёшь. Он мне сам сказал прямым текстом, что никогда не делает новых функций, а просто дописывает код внутри уже существующих.(а у меня мнение другое - любые изменения по возможности оформлять в виде вызовов новых функций).

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

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

Я же предпочитаю брать апдейтить с репозитория почаще (минимум раз в день).

У нас разные мышления!

Проклят нарушающий межи ближнего своего (Втор.27:17)
#93 
Программист коренной житель12.07.19 08:40
NEW 12.07.19 08:40 
в ответ AlexNek 11.07.19 22:09
Но есть любители делать большие классы, а в них регионы "обработка прямоугольников", "обработка окружностей" и т.п. Вот именно для этого случая. Как первый шаг.Теперь просто открываешь нужный файл и делаешь все что хочешь, при этом всё видно прямо в дереве солюшина, какие есть "регионы".

Ага, а потом у тебя дерево вида:

SomeClass.cs

SomeClass.Rect.cs

SomeClass.Circ.cs

SomeClass.Private.cs

SomeClass.IEnumerable.cs

SomeClass.ISomeOtherInterface.cs

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

#94 
Программист коренной житель12.07.19 08:46
NEW 12.07.19 08:46 
в ответ AlexNek 11.07.19 22:20
Может научите как, если таких функций не 2 смущ

У BeyondCompare есть "Align with" - F7 совмещяешь 2 функции и все дела

#95 
Murr_0002 знакомое лицо12.07.19 10:06
Murr_0002
NEW 12.07.19 10:06 
в ответ AlexNek 11.07.19 22:02

У него каждый log.Debug обвернут в регион и почти каждая функция...

------

Слишком хорошо - тоже не хорошо.

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

Но читать - не удобно.


А логер у меня тоже обернут в регион. Единственное - не завернул каждый log.Debug v #if DEBUG.

#96 
Murr_0002 знакомое лицо12.07.19 10:10
Murr_0002
NEW 12.07.19 10:10 
в ответ AlexNek 11.07.19 22:09

всё видно прямо в дереве солюшина

------

Я тут как-то приводил свой подход к данной проблеме:

- общий партиал (не намеспасе) класс.

- по-функционально - внутренние классы, каждый в своем файлике.

Непривычно... иногда сам путаюсь... но много удобнее всего виденного.

#97 
Murr_0002 знакомое лицо12.07.19 10:13
Murr_0002
NEW 12.07.19 10:13 
в ответ anly 11.07.19 23:11

ни разу не видел чтоб внутри функции регионы были

-----

Когда будет большой объем логинга и требование убрать его в релизе - порадуешься такой возможности.

#98 
Murr_0002 знакомое лицо12.07.19 10:19
Murr_0002
NEW 12.07.19 10:19 
в ответ Программист 12.07.19 08:40

Разбираться в таком будет то еще удовольствие

-----

А что мешает сунуть всю группу в отдельную папку?

У меня - 700+ таблиц и требуется столько же их представлений в ДАЛе.

Плюс - СКЛ - со старым Ораклом ЕФ6 не работает.

Плюс - бизнес-объекты

Плюс - компоненты бизнес-объектов.

Плюс...

Если это все лежит в корне солюшена - мрачно. А по папочкам - не так уж и страшно.

#99 
Программист коренной житель12.07.19 12:42
NEW 12.07.19 12:42 
в ответ Murr_0002 12.07.19 10:19
А что мешает сунуть всю группу в отдельную папку?

Тогда получится миллио папок :D Потом тоже фиг найдешь где что :)

Murr_0002 знакомое лицо12.07.19 13:05
Murr_0002
NEW 12.07.19 13:05 
в ответ Программист 12.07.19 12:42

Тогда получится миллио папок :D Потом тоже фиг найдешь где что :)

-----

Так вариантов то не много.

1. Нарушать ООП и пихать все в один файл

2. Следовать ООП и иметь много файлов в солюшене

3 Следовать ООП и иметь файлы в папках.

4. 3 плюс раскидать папки по дллкам.


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

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

Потому есть иерархия и группировкa:

- Ордера

- - Ордера.Таблица.цс

- - Ордера.Строка.цс

- - Ордера.Выборка.цс

- - Ордера.ИменаПолей.цс


Надо надстроить? Можно ЛИНКом, но делаю:

- - УникальныеОрдера

- - - УникальныеОрдера.Уникальные.цс

- - - УникальныеОрдера.Строка.цс

- - - УникальныеОрдера.Выборка.цс

- - - УникальныеОрдера.ИменаПолей.цс

Пишется не долго (копи-пасте с редактированием) и мне не надо ползать по всему солюшнику - все кучкуется.


Часть ошибок в исходном коде отловил только за счет организации кода и еще часть за счет строгой типизации - бралось не то и не оттуда.

MrSanders старожил12.07.19 20:14
NEW 12.07.19 20:14 
в ответ AlexNek 11.07.19 22:18, Последний раз изменено 12.07.19 21:50 (MrSanders)
и как его быстро найти? Среди многих, многих коммитов?

"Ой, всё!" (ц) git blame В большинстве гуёвых клиентов тоже легко смотрится. Секунд так за 5. Проблема, конечно, если ваш решарпер в каждом коммите все строки меняет. Тогда ничего не найдёте.

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

Вы, простите, какой-то ерундой маетесь. git log --author="vasja" что, слишком сложно? А! Я вспомил. У вас же ещё консолебоязнь... Тогда разбирайтесь как это в вашем гуёвом приложении работает.

ну и кто захочет иметь подобные проблемы, чтобы делать всё "правильно"?

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

отчего именно жертва? В "правильном" коде таких проблем не возникнет.

Ага. А правильный код - это код, который меняете только вы, понимаю.

Два разработчика переименовывают каждый по одной функции одного и того же класса. Каждый в своей ветке. Что тут неправильного? С чем работал, то и переименовал. Без вашей решарповской сортировки такие изменения отлично автоматически смержатся.


P.S. Извините, что-то я сегодня особо злобный, достали-с.

AlexNek патриот12.07.19 22:35
AlexNek
NEW 12.07.19 22:35 
в ответ MrSanders 12.07.19 20:14

Спасибо за идею, хотя история файла дает гораздо приятный результат а

git blame

http://de.gitready.com/beginner/2009/02/23/finding-who-com...


А вот какая польза от "git log" так и не дошло

$ git log --author="vasja"
commit aceed529a5cbdc68740839c3e63aelle41706974 (HEAD -> feature/BranchName, origin/feature/BranchName)
Author: Xxxx
Date:    xxx
Commit name1
commit 4fa2b870delac921cl3e2a33b5a376ede6235e51 Merge: ba60f6519 b73c51580
Author: Xxx
Date:    xxx
Merge remote-tracking branch ’origin/BranchName2’ into Release/2.2.20
commit ba60f6519cle7fle6c7821bc5bdl630b903d980b Merge: 801d6886d abf7d0516
Author: Xxxx
Date:    xxx
Merge branch ’Release/2.2.20’ of yyyy into Release/2.2.20
commit 801d6886d6641ac9ce7551f390fbdflf43fd9b5e
Merge: fee0f546b 38c60151b :...skipping...
commit aceed529a5cbdc68740839c3e63aelle41706974 (HEAD -> feature/BranchName3, origin/feature/BranchName3)
Author: Xxxx
Date:    xxx
Commit name2


Не вы. Вы не хотите и не делаете

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

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


Ага. А правильный код - это код, который меняете только вы, понимаю.

Какие то понятия у Вас неправильные. "Правильный код" - соответствует неким общепринятым правилам. Кто его написал не имеет особого значения.


Без вашей решарповской сортировки

Так проблема совсем не в решарпере, это был просто пример. Если исходные классы далеки от идеала, то изменить пару линий можно только исправив ошибку и больше ничего не трогать. А если трогать, то файлы будут практически разные.

AlexNek патриот12.07.19 22:38
AlexNek
NEW 12.07.19 22:38 
в ответ anly 11.07.19 23:58
По идее, хорошо ли это мышление нужно судить только по результату. (работает ли программа) и по мобильности (легко ли и быстро автор может модифицировать код без сайд эффектов)

На результат особо жаловаться не приходится, как и назвать это говнокодом. Он все же "мама" проекта.

AlexNek патриот12.07.19 22:46
AlexNek
NEW 12.07.19 22:46 
в ответ anly 11.07.19 23:11
ни разу не видел чтоб внутри функции регионы были.


Ну вот кусочек подобной функции

                        #region Add each top directory separately to zip to display backgroundworker progress
                        foreach (string topDirectoryPath in Directory.GetDirectories(CurrentSessionLabelingSessionDirectory, "*", SearchOption.TopDirectoryOnly))
                        {
                            if (backgroundWorker == null || !backgroundWorker.CancellationPending)
                            {
                                #region Compute percentage in size for each folder in top directory
                                float subDirectorySize = ComputeFolderSize(topDirectoryPath);
                                int percentage = (int)(90 * (subDirectorySize / sessionFolderSize)); // 5% at init, other 5% are added on finish
                                #endregion
                                AddDirectoryToZip(zipArchive, topDirectoryPath);
                                #region Update progress for BackgroundWorker
                                progress += percentage;
                                if (progress > 95)
                                {
                                    progress = 95;
                                }
                                backgroundWorker?.ReportProgress(progress);
                                #endregion
                            }
                        }
                        #endregion
AlexNek патриот12.07.19 22:48
AlexNek
NEW 12.07.19 22:48 
в ответ Программист 12.07.19 08:40
Ага, а потом у тебя дерево вида:

больше 3/4 еще не попадалось смущ

AlexNek патриот12.07.19 22:58
AlexNek
NEW 12.07.19 22:58 
в ответ Программист 12.07.19 08:46
У BeyondCompare есть "Align with"

Ну безусловно, что этого я не знаю спок

Есть даже поиск по "левой" половине и по "правой". смущ

Алгоритм лучший есть?

  • Копируем заголовок функции
  • Запоминаем номер строки слева
  • Стартуем алигн
  • Ищем в правой половине нужную функцию
  • Оканчиваем алигн
  • Ищем запомненый номер строки слева на экране
  • Часто приходится "выравнивать" и что то посередине функции



AlexNek патриот12.07.19 23:03
AlexNek
NEW 12.07.19 23:03 
в ответ Murr_0002 12.07.19 10:06
А логер у меня тоже обернут в регион

здорово, объясни тогда для чего

вместо этого, например

log.Debug("Start Abc")


Видеть это или просто слово "Debug"

#region Debug
log.Debug("Start Abc")
#endregion


Программист коренной житель15.07.19 08:40
NEW 15.07.19 08:40 
в ответ AlexNek 12.07.19 22:58
Алгоритм лучший есть?

Вычислить того, кто поменял порядок функций и оторвать ему руки :)

Murr патриот15.07.19 10:16
Murr
NEW 15.07.19 10:16 
в ответ AlexNek 12.07.19 23:03

объясни тогда для чего

------

Ну обьяснять надо либо с букваря, либо от Алисы.

Написано - обернут - логгер. Не инструкция логгирования, а сам логгер.

Просто чтобы не отвлекал своим синтаксисом.

Murr патриот15.07.19 10:19
Murr
NEW 15.07.19 10:19 
в ответ Программист 15.07.19 08:40

Вычислить того, кто поменял порядок функций и оторвать ему руки :)

------

А чего его вычислять - применный решарпер и поменял... только рук у него нет... :)

Программист коренной житель15.07.19 10:58
NEW 15.07.19 10:58 
в ответ Murr 15.07.19 10:19

руки надо отрывать тому, кто закоммитил эти изменения :)

Murr патриот15.07.19 11:09
Murr
NEW 15.07.19 11:09 
в ответ Программист 15.07.19 10:58

Ну оторвали. А кто кодить будет? :)

Не решается проблема таким методом. Что-то можно сделать написав и требуя соблюдения полиса. Что-то - подбирая примрно равные по квалификации кадры. Что-то - правильным разнесением задачь...


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

Программист коренной житель15.07.19 12:56
NEW 15.07.19 12:56 
в ответ Murr 15.07.19 11:09
Ну оторвали. А кто кодить будет? :)

Тот, кто не будет заниматься херней переставляя функции :)


У меня сейчас тоже стоит похожая проблема

Ну у тебя там вообще клинический случай :) Так что твой пример можно приводить только в качестве "как не надо делать" :)


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

Ну это не проблема тестов :) Это проблема того, кто эти тесты написал. Т.е. у того, кто писал эти тесты просто нет понимания того, что должно быть протестированно. Ну и плюс к этому (возможно) еще сколько-то там гигабайт нетестируемого легаси кода.

Murr патриот15.07.19 13:41
Murr
NEW 15.07.19 13:41 
в ответ Программист 15.07.19 12:56

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

-----

Понимание - есть - возможности - нет.


Ну и плюс к этому (возможно) еще сколько-то там гигабайт нетестируемого легаси кода.

-----

Там много... ну и покрытие тестами недостаточное...


Блин, текущая проблема - репорт 4-й - что-то с инвойсами.

Вместо нормального скл-ного ТРАНСФОРМ написан кусок строящий таблицу и заполняющий ее данными. Получение данных - 10 минут...

Блин, постоянные сбои на индексировании строки данных валютой платежа - для текущей валюты введены не все колонки: для всех - 5, для текущей - 3.

третий подход - с первых двух где-то год и полтора назад - сорвали... Успею ли сейчас, до очередного срочного вызова - ХЗ.

Будет вызов - повиснет гамно снова и надолго...

Программист коренной житель15.07.19 14:21
NEW 15.07.19 14:21 
в ответ Murr 15.07.19 13:41
Понимание - есть - возможности - нет.

Возможно, хотя я все таки думаю, что нет понимания.


Там много... ну и покрытие тестами недостаточное...

Ну так а почему оно недостаточное?


Murr патриот15.07.19 14:38
Murr
NEW 15.07.19 14:38 
в ответ Программист 15.07.19 14:21

хотя я все таки думаю, что нет понимания

------

Ну думать тебе никто не мешает.


Ну так а почему оно недостаточное?

-----

Ты бы спросил - почему 5 лет назад его вообще не было и прогер свихнулся...


Сижу. Ковыряю 4-й репорт на предмет индексации полей в одной табличке.

Подходит шеф и спрашивает - Я тебе послал е-майл - 60-й репорт падает - что делать?.

Он реально не компилируется:

Exception message: C:\inetpub\wwwroot\Reports\r60.aspx.vb(50): error BC30002: Type 'TGridView_R32' is not defined.

В чем причина, если:

- работ на сервере не производилось, за исключением виртуализации

- случается не первый раз

- чинилось перезагрузкой

- не починилось перезагрузкой в этот раз

- либа с классом TGridView_R32 - на месте, в BIN папке.


почему сервер не видит класса в скомпилированной либе? Все - видит, а это - никак...


Ну и главный вопрос - бросить 4-й как есть и чинить 60-й? Или довести до ума 4-й и потом начать жевать 60-й?


AlexNek патриот16.07.19 21:22
AlexNek
NEW 16.07.19 21:22 
в ответ Программист 15.07.19 08:40
Вычислить того, кто поменял порядок функций и оторвать ему руки

зачем отрывать руки за правильный результат?

AlexNek патриот16.07.19 21:26
AlexNek
NEW 16.07.19 21:26 
в ответ Murr 15.07.19 11:09
Что-то - подбирая примрно равные по квалификации кадры

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

Что есть MVVM он "забыл".

AlexNek патриот16.07.19 21:29
AlexNek
NEW 16.07.19 21:29 
в ответ Murr 15.07.19 14:38
Или довести до ума 4-й и потом начать жевать 60-й?

Ты глубоко неправ, надо чинить 75-й смущ

Программист коренной житель17.07.19 08:33
NEW 17.07.19 08:33 
в ответ AlexNek 16.07.19 21:22
зачем отрывать руки за правильный результат?

:) Если результат правильный, то значит все так и должно быть. Сиди и мерджи изменения. Не понимаю тогда, в чем твоя проблема?

Murr патриот17.07.19 09:56
Murr
NEW 17.07.19 09:56 
в ответ AlexNek 16.07.19 21:26

Что есть MVVM он "забыл".

------

А у меня все руки не доходят... Давно надо, но некогда...

MrSanders старожил17.07.19 10:43
NEW 17.07.19 10:43 
в ответ Программист 17.07.19 08:33
Не понимаю тогда, в чем твоя проблема?

"А поговорить?" (c)

  moose старожил17.07.19 11:14
NEW 17.07.19 11:14 
в ответ AlexNek 28.05.19 00:01, Последний раз изменено 17.07.19 11:15 (moose)

регион - это хорошо!

партия регионов - это плохо!

AlexNek патриот17.07.19 22:10
AlexNek
NEW 17.07.19 22:10 
в ответ Программист 17.07.19 08:33
Не понимаю тогда, в чем твоя проблема?

Размышляю сильно много смущ

Мержить то другие должны, а кого интересует какой порядок правильный.

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

AlexNek патриот17.07.19 22:12
AlexNek
NEW 17.07.19 22:12 
в ответ Murr 17.07.19 09:56
Давно надо, но некогда...

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

Это лучше с самого начала делать.

AlexNek патриот17.07.19 22:13
AlexNek
NEW 17.07.19 22:13 
в ответ moose 17.07.19 11:14

интересная мысля, что то в ней есть up

Программист коренной житель18.07.19 08:49
NEW 18.07.19 08:49 
в ответ AlexNek 17.07.19 22:10
Получается, что если начать делать правильно, то все остальные будут только ругаться.

Может быть я чего-то не понимаю, но правильно - это не менять порядок функций :)

И, соответственно, тот, кто меняет порядок функций делает не правильно, а значит заслуживает отрывания рук :)


У нас в команде есть один такой чудила, он любит переименовывать переменные. Ну типа из name сделает strName или FileName или еще что-нибудь. В результате хренова туча конфликтов в мердже. И хоть кол ему на голове теши! Каждый раз хочется убить. И я еще понимаю, когда исправлена орфоргафическая ошибка в имени или новое имя лучше описывает суть... но он просто меняет внешний вид (при этом, по моему мнению, не в лучшую сторону).

Murr патриот18.07.19 10:09
Murr
NEW 18.07.19 10:09 
в ответ AlexNek 17.07.19 22:12

потом эту кучу вообще не разгребешь.

------

Это Я вполне отчетливо понимаю.

Но - для себя - надо изучить... а времени - нету... да еще и все железо дохнет...

Murr патриот18.07.19 10:16
Murr
NEW 18.07.19 10:16 
в ответ Программист 18.07.19 08:49

И хоть кол ему на голове теши!

-----

Не надо кол. Достаточно посадить на мержи и назначить выпускающим. Ну а время на задачи оставить как было. За неделю вылечится.


Ну и это... у вас в полиси правила построения имен хоть как-то обозначены?


У меня в коде полно переменных поименованных DT... & DR... - преставляют ДатаТабле и ДатаРов.

Вроде должно быть понятно... но вот на 3-4-м десятке начинаешь путаться какая таблица, какая строка...

А в купе с тем, что одна и та же переменная может хранить разные таблицы/строки или формат

таблиц/строк в процессе меняется - получается... прямой путь в клинику... хммм


Программист коренной житель18.07.19 10:25
NEW 18.07.19 10:25 
в ответ Murr 18.07.19 10:16, Последний раз изменено 18.07.19 10:25 (Программист)
Достаточно посадить на мержи и назначить выпускающим. Ну а время на задачи оставить как было. За неделю вылечится.

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

В любом случае, я не шеф и назначить его не могу.


у вас в полиси правила построения имен хоть как-то обозначены?

Жестких полиси нет. И шеф не хочет вводить запрет на изменение имен переменных.

Murr патриот18.07.19 11:56
Murr
NEW 18.07.19 11:56 
в ответ Программист 18.07.19 10:25

Как ты посадишь его мерджить незнакомый код? :)

-----

Так в этом ВЕСЬ смысл - в настоящее время чел не понимает какую работу заставляет делать коллег.

Поделает ее сам - поймет - будет рабоатть как надо.


И шеф не хочет

------

Так ни запрет, ни чего такого стремного и не нужно.

Нужно просто иметь правила поименования и требовать их соблюдения.


Про венгерскую нотацию написано много.

А вот у меня она не прижилась. Как-то не вижу неоходимости указывать префиксом тип там, где все элементы сильно типизированны.


Срыв покровов коренной житель18.07.19 12:09
NEW 18.07.19 12:09 
в ответ Murr_0002 12.07.19 10:06
А логер у меня тоже обернут в регион. Единственное - не завернул каждый log.Debug v #if DEBUG.

накуя?!


Срыв покровов коренной житель18.07.19 12:11
NEW 18.07.19 12:11 
в ответ Murr_0002 09.07.19 13:14
"Type" vs "var"-----Да нет этой темы. Есть хуливара на тему. А темы - нету. "Тыпе" - сразу понятно какая функциональность доступна. Ошибки времени компиляции."Вара" - фиг его знает что там, но должно работать. Ошибки времени выполнения.

ты кажись не понял, что такое var.


Murr патриот18.07.19 13:22
Murr
NEW 18.07.19 13:22 
в ответ Срыв покровов 18.07.19 12:09

накуя?!

-----

На кvадратного.

AlexNek патриот18.07.19 21:50
AlexNek
NEW 18.07.19 21:50 
в ответ Программист 18.07.19 08:49
но правильно - это не менять порядок функций

А если существующий порядок неправильный, согласно принятым правилам, тогда как?

AlexNek патриот18.07.19 21:53
AlexNek
NEW 18.07.19 21:53 
в ответ Murr 18.07.19 10:09
Но - для себя - надо изучить... а времени - нету...

ставь дома визуал студию смущ

AlexNek патриот18.07.19 21:55
AlexNek
NEW 18.07.19 21:55 
в ответ Программист 18.07.19 10:25
мы обычно мерджим через несколько месяцев после написания кода

Так у вас водопад и маленькая команда?

AlexNek патриот18.07.19 21:57
AlexNek
NEW 18.07.19 21:57 
в ответ Murr 18.07.19 11:56
А вот у меня она не прижилась.

так есть даже запрет на ее использование спок где то в стайл гайде мелкософта

AlexNek патриот18.07.19 21:59
AlexNek
NEW 18.07.19 21:59 
в ответ AlexNek 18.07.19 21:57

Зато сегодня нашел место где самому страшно захотелось пользовать регионы - в XAML

Программист коренной житель18.07.19 22:12
NEW 18.07.19 22:12 
в ответ AlexNek 18.07.19 21:50

Если есть описывающие порядок функций правила, то руки надо оторвать тому, кто расположил их неправильно :)


А вообще это дичь какая-то :)

Программист коренной житель18.07.19 22:18
NEW 18.07.19 22:18 
в ответ AlexNek 18.07.19 21:55, Последний раз изменено 18.07.19 22:28 (Программист)
Так у вас водопад и маленькая команда?

У нас не водопад, но таки маленькая команда. И шеф, который пытается понять как работает код. Он дает добро на мердж только в 2-х случаях:

1) когда понял изменение (должно быть изменено не больше 50-100 строк, если больше, то он подвисает очень надолго :))

2) когда клиенты пинают его шефа и его шеф вставляет звиздюлей. В этом случае понимания кода не требуется, а пару раз мерджели даже без тестирования (при этом код был готов месяца 2-3 до мерджа) :D


Вот буквально только что я замерджил изменение, которое было завершено на бранче в начале июня. При этом я точно знаю, что в некоторых местах там есть проблемы. Забавно, что один из системных тестов красный (на самом деле это из-за того, что ошибка была всегда в мастере, а я ее пофиксил. т.е. это тот редкий случай, когда надо править ожидание теста) из-за этого не срабатывают юнит-тесты, т.е. по большому счету у нас нет доказательств того, что все ОК. Более того, я завтра последний день перед отпуском, и на фирме остается шеф, который не понял изменения, и джуниор разработчик, который тоже не до конца понял изменения. И все это добро планируют установить на боевой системе во время моего отпуска :) А все из-за того, что шефу таки настучали по голове и потребовали срочно решить проблему. Вот так и живем :)

Murr патриот19.07.19 10:03
Murr
NEW 19.07.19 10:03 
в ответ AlexNek 18.07.19 21:53

ставь дома визуал студию

-----

Так есть ее... даже две... точнее - было - мащинка сдохла - БП.

А вот времени на это уже нет...

Murr патриот19.07.19 10:14
Murr
NEW 19.07.19 10:14 
в ответ AlexNek 18.07.19 21:57

где то в стайл гайде мелкософта

------

Читать гайды от мелкомягих? Мне хватает кода написанного в точном соответствии с примерами мелкомягких - если на описано, а у меня не описано, что и как делается - фиг разберешся без поллитры что там...


Текучка:

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

на основании полученных данных - строится набор ДатаКолумнов и добавляется в другую табличку

по этой другой табличке строится третья - с удалением и добавлением полей

все это написано именно в стиле примеров мелкомягких:


Private Function createReport(ByVal startDateTime As String, ByVal finishDateTime As String) As DataSet
Dim DS As New DataSet
Dim DTOptimisations As DataTable = Nothing
Dim DTReplacements As DataTable = Nothing
Dim DTPieces As DataTable = Nothing
Dim DTNUM_KREIS As DataTable = Nothing
Dim DTLIPROD_USER As DataTable = Nothing
'Dim DTDisplay As DataTable = Nothing
Dim DTSummary As DataTable = Nothing
Try
DTOptimisations = DXCR8.loadDTOptimisations(startDateTime, finishDateTime)
DTReplacements = DXCR8.loadDTReplacements(startDateTime, finishDateTime)

DTOptimisations.Merge(DTReplacements)

If DTOptimisations.Rows.Count > 0 Then

DTNUM_KREIS = DXCR8.loadDTNUM_KREIS
DTNUM_KREIS = loadDTNUM_KREIS_abbreviateDepartment(DTNUM_KREIS)
DTLIPROD_USER = DXCR8.loadDTLIPROD_USER

DTOptimisations = addColumnsDTOptimisations(DTOptimisations, DTNUM_KREIS)
DTOptimisations = DTOptimisations.Select("", "batchNo, glassNo").CopyToDataTable

For Each DROptimisation As DataRow In DTOptimisations.Rows

If DROptimisation.Item("batchNo").ToString = "3041312" Then
DROptimisation.Item("batchNo") = 3041312
End If

If DROptimisation.Item("seqNo").ToString = "-3" Then
DTPieces = DXCR8.loadDTPiecesDummy("800001", DROptimisation)
Else
DTPieces = DXCR8.loadDTPieces(DROptimisation)
End If

If DTPieces.Rows.Count > 0 Then

DTPieces = DTPieces_setDepartment(DTNUM_KREIS, DTPieces)
DTPieces = DTPieces_setDepartment_exceptions(DTNUM_KREIS, DTLIPROD_USER, DTPieces)
DTPieces = DTPieces_setDepartment_replacements(DTNUM_KREIS, DTLIPROD_USER, DTPieces)

DROptimisation = fillDROptimisation(DTPieces, DTNUM_KREIS, DROptimisation)

End If
Next
DTOptimisations = fillDTOptimisation_combinedGlassNames(DTOptimisations)
DTOptimisations.Columns.Remove("sheetWidth")
DTOptimisations.Columns.Remove("sheetHeight")
DTOptimisations.Columns.Remove("seqNo")
DTOptimisations.Columns.Remove("timestampIndex")


DTSummary = loadDTSummary(DTOptimisations)

Me.ViewState.Item("DTOptimisations") = DTOptimisations
Me.ViewState.Item("DTSummary") = DTSummary
PNL1AddGV("GVDisplay", "Stock Sheet Usage", DTOptimisations)
PNL1AddGV("GVSummary", "Stock Sheet Summary", DTSummary)
End If



Catch ex As Exception

End Try
Return DS
End Function




Найдешь, с плутыка, где и как менается структура двух таблиц?

Вопрос второй - нахрена пустой DS возвращать? смущ

Murr патриот19.07.19 10:16
Murr
NEW 19.07.19 10:16 
в ответ Программист 18.07.19 22:18

Вот так и живем :)

------

Достаточно типичная картина...

AlexNek патриот19.07.19 22:52
AlexNek
NEW 19.07.19 22:52 
в ответ Murr 19.07.19 10:03
А вот времени на это уже нет...

ну в этом случае я пас смущ

AlexNek патриот19.07.19 22:57
AlexNek
NEW 19.07.19 22:57 
в ответ Murr 19.07.19 10:14
на основании полученных данных - строится набор ДатаКолумнов и добавляется в другую табличку

уже после этого не хочется читать дальше. Ладно еще можно понять когда что то с базы читается. Не люблю я как то DataTablе.

1 2 3 4 5 6 7 8 все