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

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

2003  1 2 3 4 5 6 7 8 все
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 
1 2 3 4 5 6 7 8 все