|
Заблокирован
|
|
Как получить внутри метода имя фактического параметра?22.12.2017, 18:31. Показов 4011. Ответов 43
Метки нет (Все метки)
Метод в программе вызывается неоднократно с разными фактическими параметрами. Как внутри метода получить имя фактического параметра?
(Это для отладки удобно было бы) Если прямо это невозможно, то для параметров (например, массивов), передаваемых по ссылке, можно, наверное, использовать метод Equals(Object) с тем, чтобы провести проверку на все фактические параметры (их перечень, естественно известен)?
0
|
|
| 22.12.2017, 18:31 | |
|
Ответы с готовыми решениями:
43
Как получить имя метода?
|
|
|
||
| 23.12.2017, 15:16 | ||
nameof()? Ибо количественно вы делаете ту же работу. Странно.И, кстати, а не вы ли этот исходный код сейчас пишете? Сами же сказали - с фортрана.
0
|
||
|
Заблокирован
|
||
| 23.12.2017, 15:53 [ТС] | ||
|
В коде метода достаточно сравнить 1 параметр методом Equals с известным набором возможных аргументов этого формального параметра - по результату я присваиваю переменной char тот или иной символ, который встраивается в строку вывода. И в файл выводятся имена использованных при данном вызове аргументов. Мне так показалось удобнее. Добавлено через 6 минут Например, имена формальных параметров (массивов) a0, a1, a2, a3, a4, a5, a6, a7, a8, a9 а фактические параметры (аргументы): as0, as1, as2, as3, as4, as5, as6, as7, as8, as9 ad0, ad1, ad2, ad3, ad4, ad5, ad6, ad7, ad8, ad9 af0, af1, af2, af3, af4, af5, af6, af7, af8, af9 если проверить a0 на эквивалентность as0, ad0 и af0 то по результату можно символьной переменной присвоить s, d или f и соответствующим образом сформировать строку вывода.
0
|
||
|
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,123
|
||
| 23.12.2017, 16:44 | ||
|
Я настоятельно рекомендую переписывать всё, что возможно в нормальном стиле. Методы отладки нормального кода на порядок проще и легче, чем возня с такой хренью. Добавлено через 3 минуты Серьёзно, если взялись старый код переписывать, то его нужно и модифицировать. А если всё переносить один к одному, то не проще ли старый код оставить? Иначе, какой смысл переписывать?
0
|
||
|
Администратор
|
||
| 23.12.2017, 16:56 | ||
|
0
|
||
|
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,123
|
|
| 23.12.2017, 16:59 | |
|
OwenGlendower, я не согласен. Оригинальный код работает. Его можно и оставить. А если браться переписывать, то с целью улучшения, так ведь? Если в конечном итоге получится тоже самое дерьмо, то что это даст, кроме затраченного времени?
Добавлено через 1 минуту Я про то, что перенос кода на другую платфому - офигеннейший повод для хоть какого-то рефакторинга. От этого толку будет больше, чем от внедрения сомнительных способов снятия телеметрии. Нормальный код не нужно покрывать телеметрией...
0
|
|
|
Администратор
|
|
| 23.12.2017, 17:00 | |
|
Usaga, согласен, но если ТС считает что ему так сейчас удобнее, но пускай делает именно так. Тем более что он уже в процессе переписывания.
1
|
|
|
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,123
|
|||
| 23.12.2017, 17:03 | |||
|
Добавлено через 2 минуты
0
|
|||
|
Администратор
|
|
| 23.12.2017, 17:10 | |
|
Usaga, мне тоже приходидось переписывать чужой код. И я сначала полностью разбирался как работает старый, а потом писал его заново. Соответственно ты полностью прав советуя переписать с нуля, вместо переноса один-в-один. Но ситуации бывают разные. И иногда, я готов допустить такую вероятность, лучше может оказаться подход ТСа. Кроме того на данном этапе совет переписать заново означает также отказ от уже сделанной работы и необходимость начать всё заново. Не факт что такая возможность есть. Особенно если программа уже почти переписана.
В итоге - я не говорю что не прав советуя переписать с нуля. Только что не нужно так упорно советовать решение которое ТС не хочет применять. Я думаю он прекрасно понял твой совет. И раз он не хочет им воспользоваться, то, как говорится, хозяин - барин.
1
|
|
|
|
||
| 23.12.2017, 17:15 | ||
|
Так что советы в стиле "дерьмо архитектура" советы в никуда. Архитектура дерьмовая, потому что не твоя.
0
|
||
|
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,123
|
|
| 23.12.2017, 17:15 | |
|
OwenGlendower, я не советую переписывать с нуля всё. Советую пересывать всё, что можно (легко). Перепись с нуля - дорогое удовольствие. Но отдельные моменты - вполне себе нормально. 10 массивов передавать в метод - хрень чистой воды. Как с этим работать можно? Дичь же. Я за разумный подход. И перенос один-в-один считаю не разумным подходом.
Вы сами посмотрите, на что такое говнокод ТС-а сподвигает)
0
|
|
|
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,123
|
||
| 23.12.2017, 17:18 | ||
|
Почему мои советы так радикально вопринимаются?
0
|
||
|
Администратор
|
|||
| 23.12.2017, 17:22 | |||
|
Добавлено через 1 минуту
1
|
|||
|
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,123
|
||
| 23.12.2017, 17:25 | ||
|
Добавлено через 2 минуты
1
|
||
|
Заблокирован
|
|
| 23.12.2017, 19:10 [ТС] | |
|
На самом деле, согласен со всеми. Сейчас вижу, что действовал не оптимально. Но "работа" уже сделана. Бог даст заработает. Ещё раз - спасибо!)
Добавлено через 8 минут Поясню. P.S. Старый код работал в незапамятные времена. Я не смог его запустить, были проблемы кое-какие (я не гуру, а это очень старая версия фортрана), и я махнул на это рукой. А зря - нужно было добиться его работоспособности. Наверное придется это сделать теперь. Хотя не факт, что у меня именно работоспособная версия программы. В одной ветке кода управление передается по оператору GO TO прямо в тело цикла(???) Такое не могло же быть работоспособным. Мда.
0
|
|
|
Администратор
|
||
| 23.12.2017, 19:21 | ||
|
1
|
||
|
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,123
|
||
| 24.12.2017, 06:49 | ||
|
Добавлено через 7 минут titan4ik, я вижу два выхода из вашей ситуации: 1) Пофиксить баги в самом приложении на фортране. Код уже есть и, скорее всего, рабочий. Отремонтировать (если есть что) будет дешевле полного переписывания; 2) Переписать на C#, но полностью отрефакторив. Переписывать один-в-один - тупо. Вы ведь получите тоже самое, что было в самом начале (включая баги и дерьмокод). Профит нулевой.
0
|
||
|
Заблокирован
|
||||
| 24.12.2017, 10:58 [ТС] | ||||
|
Передача управления в тело цикла И понял так, что никто не высказался за то, что по GO TO можно передавать управление в тело цикла без особого условия (условие в том, что до этого этот цикл уже начал свое исполнение и потом управление было передано вовне цикла, а потом уже опять внутрь), которое в моем случае отсутствует. У вас другое мнение на этот счет? Прежде всего, с самого начала пришлось многомерные массивы подрихтовать, ведь в фортране они заполняются по столбцам, а в c# по строкам и ввод-вывод и т.п.
0
|
||||
|
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,123
|
||
| 24.12.2017, 13:32 | ||
|
У меня вполне конкретное мнение по поводу заданного вами вопроса в шапке темы. И это мнение я уже озвучил)
0
|
||
|
Заблокирован
|
|||
| 24.12.2017, 22:38 [ТС] | |||
|
Понял, а я решил, что это
Всем спасибо. Добавлено через 7 часов 3 минуты В принципе как бы это моё личное дело, но поскольку многие приняли живое участие, сообщаю. Основной код заработал! Ура. Тест, сохранившийся с незапамятных времен показал, что считает правильно. Вывод - иногда тупой лобовой путь не самый кривой) Буду доводить прочие режимы программы и попутно избавляться от грехов "архитектуры". Теперь это проще - когда можно всегда откатить на хоть и страшную на вид, но работоспособную версию. Добавлено через 6 минут Кстати, пока делал этот лобовой перевод, используя нехитрые возможности VS, например, по замене каких-то символов на другие (например - круглые скобки массивов в фортране на квадратные c#), поймал себя на мысли, что не так уж трудно это автоматизировать полностью. Но не уверен, что это сейчас будет очень востребовано.
0
|
|||
| 24.12.2017, 22:38 | |
|
Можно ли во время выполнения "извлечь" имя приложения, имя класса, имя исполняемого метода и пр. ? Получить имя метода внутри самого метода Ошибка: "Тип фактического параметра должен быть идентичен типу формального параметра-переменной" Как внутри события получить имя объекта Как из IP адреса получить имя компа (см. внутри) (Помогите!) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|