Region C# хорошо или плохо?
Тогда получится миллио папок :D Потом тоже фиг найдешь где что :)
-----
Так вариантов то не много.
1. Нарушать ООП и пихать все в один файл
2. Следовать ООП и иметь много файлов в солюшене
3 Следовать ООП и иметь файлы в папках.
4. 3 плюс раскидать папки по дллкам.
Между просто много файлов в куче и раскиданными по папкам Я все же выберу папки и буду думать над их организацией - как поименовать, как вложить, в какую дллку пихнуть...
Пойми - у меня действительно много кода и код достаточно плохой - мне нужна более-менее прозрачная организация переработанных частей.
Потому есть иерархия и группировкa:
- Ордера
- - Ордера.Таблица.цс
- - Ордера.Строка.цс
- - Ордера.Выборка.цс
- - Ордера.ИменаПолей.цс
Надо надстроить? Можно ЛИНКом, но делаю:
- - УникальныеОрдера
- - - УникальныеОрдера.Уникальные.цс
- - - УникальныеОрдера.Строка.цс
- - - УникальныеОрдера.Выборка.цс
- - - УникальныеОрдера.ИменаПолей.цс
Пишется не долго (копи-пасте с редактированием) и мне не надо ползать по всему солюшнику - все кучкуется.
Часть ошибок в исходном коде отловил только за счет организации кода и еще часть за счет строгой типизации - бралось не то и не оттуда.
и как его быстро найти? Среди многих, многих коммитов?
"Ой, всё!" (ц) git blame В большинстве гуёвых клиентов тоже легко смотрится. Секунд так за 5. Проблема, конечно, если ваш решарпер в каждом коммите все строки меняет. Тогда ничего не найдёте.
огда даже для того чтобы найти свои изменения приходится делать фильтр по ветке и по коммитеру.
Вы, простите, какой-то ерундой маетесь. git log --author="vasja" что, слишком сложно? А! Я вспомил. У вас же ещё консолебоязнь... Тогда разбирайтесь как это в вашем гуёвом приложении работает.
ну и кто захочет иметь подобные проблемы, чтобы делать всё "правильно"?
Не вы. Вы не хотите и не делаете. Пожалуйста, ваше право. Просто перестаньте постоянно рассказывать как не работает то что вы не понимаете и не делаете.
отчего именно жертва? В "правильном" коде таких проблем не возникнет.
Ага. А правильный код - это код, который меняете только вы, понимаю.
Два разработчика переименовывают каждый по одной функции одного и того же класса. Каждый в своей ветке. Что тут неправильного? С чем работал, то и переименовал. Без вашей решарповской сортировки такие изменения отлично автоматически смержатся.
P.S. Извините, что-то я сегодня особо злобный, достали-с.
Спасибо за идею, хотя история файла дает гораздо приятный результат а
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
Не вы. Вы не хотите и не делаете
Что то у вас странная позиция, я ведь всего лишь рассуждаю о проблеме. Буквально сегодня заменил десяток функций одной "генерик", но только потому, что знаю в этих файлах никто копаться сейчас не будет.
Ну невозможно изменить только пару строк чтобы привести данный кусок в "порядок".
Ага. А правильный код - это код, который меняете только вы, понимаю.
Какие то понятия у Вас неправильные. "Правильный код" - соответствует неким общепринятым правилам. Кто его написал не имеет особого значения.
Без вашей решарповской сортировки
Так проблема совсем не в решарпере, это был просто пример. Если исходные классы далеки от идеала, то изменить пару линий можно только исправив ошибку и больше ничего не трогать. А если трогать, то файлы будут практически разные.
По идее, хорошо ли это мышление нужно судить только по результату. (работает ли программа) и по мобильности (легко ли и быстро автор может модифицировать код без сайд эффектов)
На результат особо жаловаться не приходится, как и назвать это говнокодом. Он все же "мама" проекта.
ни разу не видел чтоб внутри функции регионы были.
Ну вот кусочек подобной функции
#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
У BeyondCompare есть "Align with"
Ну безусловно, что этого я не знаю
Есть даже поиск по "левой" половине и по "правой".
Алгоритм лучший есть?
- Копируем заголовок функции
- Запоминаем номер строки слева
- Стартуем алигн
- Ищем в правой половине нужную функцию
- Оканчиваем алигн
- Ищем запомненый номер строки слева на экране
- Часто приходится "выравнивать" и что то посередине функции
Ну оторвали. А кто кодить будет? :)
Не решается проблема таким методом. Что-то можно сделать написав и требуя соблюдения полиса. Что-то - подбирая примрно равные по квалификации кадры. Что-то - правильным разнесением задачь...
У меня сейчас тоже стоит похожая проблема - дофига некомитченного кода - нельзя коммитить - тесты деструктивные, а ЦИ - глупый - будет гонять на их на живой базе... надо дописывать, а времени на это нет... все накапливается... чую, что закончится все переходом в новый репозиторий - так будет проще разрулить ситуацию...
Ну оторвали. А кто кодить будет? :)
Тот, кто не будет заниматься херней переставляя функции :)
У меня сейчас тоже стоит похожая проблема
Ну у тебя там вообще клинический случай :) Так что твой пример можно приводить только в качестве "как не надо делать" :)
дофига некомитченного кода - нельзя коммитить - тесты деструктивные, а ЦИ - глупый - будет гонять на их на живой базе...
Ну это не проблема тестов :) Это проблема того, кто эти тесты написал. Т.е. у того, кто писал эти тесты просто нет понимания того, что должно быть протестированно. Ну и плюс к этому (возможно) еще сколько-то там гигабайт нетестируемого легаси кода.
кто писал эти тесты просто нет понимания того, что должно быть протестированно
-----
Понимание - есть - возможности - нет.
Ну и плюс к этому (возможно) еще сколько-то там гигабайт нетестируемого легаси кода.
-----
Там много... ну и покрытие тестами недостаточное...
Блин, текущая проблема - репорт 4-й - что-то с инвойсами.
Вместо нормального скл-ного ТРАНСФОРМ написан кусок строящий таблицу и заполняющий ее данными. Получение данных - 10 минут...
Блин, постоянные сбои на индексировании строки данных валютой платежа - для текущей валюты введены не все колонки: для всех - 5, для текущей - 3.
третий подход - с первых двух где-то год и полтора назад - сорвали... Успею ли сейчас, до очередного срочного вызова - ХЗ.
Будет вызов - повиснет гамно снова и надолго...
хотя я все таки думаю, что нет понимания
------
Ну думать тебе никто не мешает.
Ну так а почему оно недостаточное?
-----
Ты бы спросил - почему 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-й?