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

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

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

1 2 3 4 5 6 7 8 все