|
![]() |
#1 |
Участник
|
2 Gustav
IMHO эти проверки помогают: 1 (и главное). против ошибок собственно программистских... 2. против ошибок, связанных с версиями MS Office, неверно работающими с данной версией Аксапты (несертифицированных для данной версии Аксапты)... Это по моему опыту. |
|
![]() |
#2 |
Moderator
|
somebody, спасибо за мнение, позволю себе немножко поразглагольствовать
![]() Речь моя не о проверках вообще, а об их избыточном, как мне кажется, количестве именно в классе ComExcelDocument_RU. Начну со второго тезиса: Цитата:
Сообщение от somebody
2. против ошибок, связанных с версиями MS Office, неверно работающими с данной версией Аксапты (несертифицированных для данной версии Аксапты)
Цитата:
Сообщение от somebody
1 (и главное). против ошибок собственно программистских...
Давайте посмотрим для иллюстрации "первозданную" (со слоя dis) реализацию метода findRange: Код: // Creates object range type named the same way as Excel bookmark // bookMark -> Excel bookmark name protected COM findRange(MSOfficeBookMark_RU bookMark, int _workSheet = 1) { COM comRange, comWorkSheet; COM comApplication; ; if (m_comDocument) { comWorkSheet = this.getWorkSheet(_workSheet); comApplication = m_comDocument.application(); comWorkSheet.activate(); if (comWorkSheet && comApplication) { comRange = comApplication.range(bookMark); } } return comRange; } ![]() Первое "идеологическое" замечание: что это за "Excel bookmark" такой, по которому находится объект Range? По смыслу это адрес ячейки вида "А1" или имя именованного диапазона, создаваемое, например, командой "Вставка-Имя-Присвоить" - также в виде строки вида "МояЯчейка" или "МойДиапазон". Но в большинстве случаев это именно адрес вида "А1", или "F19", или "IV65536" и т.п. Так почему не назвать просто и "по-родному по-эксельному" - Address? Посмотрим, кстати, в AOT, что это за EDT такой навороченный - MSOfficeBookMark_RU. Находим: стринг 80 символов, Label - "Закладка", HelpText - "Введите название закладки, в которую будут эскпортироваться данные"... Уф-уф-уф... Вместо того, чтобы выходить из чащи, мы в нее еще глубже прёмся... Почему не использовать обычный тип "str"? Где мы еще хотим использовать этот MSOfficeBookMark_RU? В Ворде, да. Оттуда эта "закладка", похоже и пришла. Так пусть там и будет "закладка", а в Ёкселе будет "адрес" и оба будут типа "str"! А где еще использовать-то этот тип, кроме как в Ворде и Экселе? Или мы хотим от этого типа в дальнейшем порождать какое-то бешенное потомство? Так предок уже сам не совсем нормальный, получается... Какое потомство-то? Я вам честно говорю, когда я, в Excel'е за 10 лет кое-что уже разумеющий, начал изучение этого класса и набрёл на этот метод, то просто съёжился: "range" - интуитивно понятно, "worksheet" - тоже, но что такое в этой связке "bookMark" с типом "MSOfficeBookMark_RU"? ооой... Далее - "документ". В Ворде это "Document", согласен. Но в Экселе-то - "Workbook"! Зачем привычную иерархию "Application - Workbook - Worksheet - Range" менять на "Application - Document - Worksheet - Range"? Цель какая? Сбить с толку человека, знакомого с Excel ранее? Вполне получается. Или все силы брошены на поддержку наследования с гордым предком ("родителем") ComOfficeDocument_RU и двумя послушными потомками ("детьми") ComExcelDocument_RU и ComWordDocument_RU? Мы собираемся создавать еще "внуков"? Интересно, как они примерно могут называться: "Эксель Экселей" или "Ворд Вордов"? А "родителя" мы создали только потому, что у "детей" есть похожие операции типа "OpenFile" или "QuitApplication"? Уф, в запальчивости устал. Прервусь пока. (to be continued later...) |
|
Теги |
best practice, spreadsheet, как правильно, стиль программирования |
|
|