|
04.03.2021, 13:24 | #1 |
Участник
|
Цитата:
ага. понял. спасибо. я так понимаю, что ты пытаешься улучшить стандартный класс Class_SysSourceNameWash, чтобы он чего-то умное делал. Но при этом по-прежнему используешь опасный strdel и безумный strpoke... судя по названию проекта, меняешь регистр букв в объектах. а зачем? и почему только в методах? есть ли замена и в свойствах? а главное, зачем? а может ты форматтер кода делаешь? prettier, только для Аксапты? Давно хочется Последний раз редактировалось mazzy; 04.03.2021 в 13:31. |
|
04.03.2021, 14:07 | #2 |
Участник
|
Имелись в виду классы
SysSourceNameWash SysSourceUpdate там стандартный код правил. Возможно у кого-то есть свои правки или версия отличается. Цитата:
Попутно выяснилось что инструмент содержит немного багов: 1. Некорректно обрабатывает методы, в которых есть строки длиннее 250 символов, как следствие такие методы остаются необработанными, да еще и ругается на них каждый раз при запуске. 2. Ошибочно преобразует ссылки в коде на имена полей таблиц у которых в начале более 2 заглавных символов (например someTable.ISOcode испохабил - привел к нижнему региструsomeTable.isOcode, хотя не надо было трогать, т.е. не везде корректно учитывал область применения - преобразовывал первые символы к нижнему регистру там где не надо) 3. Финальное сохранение было сделано через методы xUtilElements:: которые обращались к тормозной вьюхе UtilElements (по 1 секунде на запрос) что при массовой обработке думало по полдня. 4. Кажется (точно уже не помню) некорректно обрабатывались методы на формах (лукапы, методы датасорсов итп) - (вроде бы они то ли вообще не обрабатывались то ли ссылки на них не обрабатывались) 5. Правильно обрабатывались стандартные зарезервированные слова, для которых в ветке \System Documentation\Reserved Words почему-то были заданы большие буквы в camel стиле (ttsBegin ttsCommit ttsAbort forUpdate итп) - преобразовывались в нижний регистр, но сам редактор при вводе подставлял их неверно - как в AOT. Редактор исправить невозможно, пришлось править класс, чтобы было безобразно, но единообразно. 6. Из-за баги некорректно шла обработка методов содержащих макросы, так что исходный код всего метода оставался неизменным. 7. Не умеет корректно обрабатывать макросы. - Не меняет их содержимое. и фич: 8. Обрабатывает все подряд, вместо конкретного слоя. (я не хотел править стандартный код, только то что на usr мы сами наваяли) 9. Запускать его надо 2 раза подряд (при 1-м запуске изменяет имена методов и переменных, при втором ссылки на методы) пп 1-6 исправил. п. 7 непонятно как исправлять, но это некритично. п.8 исправил. п.9 - просто надо учитывать и запускать обработку дважды. В целом код обработки писал параноик, перед внесением изменений делается сравнение без учета регистра - отличается ли исходный код до изменений и после и если отличается, то изменения не вносятся. Так что запускать можно безопасно - сломать ничего не должен. Цитата:
Цитата:
Просто в Legacy коде была свистопляска. методы то с большой то с маленькой буквы написаны. Имена переменных то с большой то с маленькой. Имена типов / классов / таблиц / полей таблиц в таком же стиле, т.е. отсутствии стиля. Где в лес где по дрова. Ну, а этот инструмент это все исправляет в соответствие со стандартом. Имена самих узлов в АОТ кроме имен методов он не трогает. Только исходный код правит. Из полезного - читаемость код улучшилась. Последний раз редактировалось Logger; 04.03.2021 в 14:11. |
|
04.03.2021, 14:18 | #3 |
Участник
|
Цитата:
Сообщение от mazzy
prettier, только для Аксапты? Давно хочется
Не до того. Работу работать надо. Стандартный аксаптовский преобразователь неплохо улучшает внешний вид и читаемость кода. |
|
04.03.2021, 14:41 | #4 |
Участник
|
Цитата:
Цитата:
Сообщение от Logger
В целом код обработки писал параноик, перед внесением изменений делается сравнение без учета регистра - отличается ли исходный код до изменений и после и если отличается, то изменения не вносятся. Так что запускать можно безопасно - сломать ничего не должен.
... Это не я. Это в инструменте так написано. Я там чего-то своего почти не добавлял. по-моему Wash делал не параноик, а тот, кто ни аксапту, ни джаву не знает. по-моему ощущению, какой-то человек с регистрозависимого языка жаль. очень жаль. Цитата:
Безобразие. Может все-же форматер? всё?! Цитата:
и это - хорошо! |
|
04.03.2021, 14:49 | #5 |
Участник
|
Цитата:
Можно дописать, но я не стал. Мне кажется, что это некритично. Главное в исходном коде поправить. Именно исходники читаем бОльшую часть времени. |
|
04.03.2021, 14:57 | #6 |
Участник
|
|
|
04.03.2021, 15:28 | #7 |
Участник
|
Цитата:
У многих программистов проявляется инерция мышления и они пытаются с регистронезависимым языком обращаться как с регистрозависимым. Например, знаменитый инструмент JAEE.AX.EditorExtensions.HighlightWord написан как будто X++ это регистрозависимый язык! Из-за этого подсветка в коде работает с учетом регистра и подсвечивает не все. Т.е. пользоваться невозможно. Я не поленился, нагуглил все форки этого инструмента. Ни в одном нет регистронезависимого сравнения. Editor extensions и регистр символов Написал одному из авторов с просьбой поменять, так он в ответ сказал что не видит проблемы, надо, мол, просто исходный текст в аксапте поменять и все ок, т.е. проявил инерцию мышления, по привычке пытается работать с X++ как с регистрозависимым языком. https://github.com/jaestevan/AX2012-...sions/issues/1 В итоге, сам перекомпилял dll-ку чтобы регистр не учитывался. https://axforum.info/forums/attachme...7&d=1557923693 Спасибо Martin Dráb за подсказки по исправлению. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
04.03.2021, 16:10 | #8 |
Участник
|
Цитата:
Понятно. Дело хорошее. |
|
04.03.2021, 16:16 | #9 |
Участник
|
Цитата:
Я улучшаю читаемость кода. Реально удобнее стало. И приятнее для восприятия. |
|
Теги |
sourceline |
|
|