API C++ библиотеки
От: Nonmanual Worker  
Дата: 29.06.21 11:37
Оценка:
Всем привет!
Много лет не писал ничего на С++.
Сейчас столкнулся со сторонней библиотекой на С++, как вы думаете, такой код (подход,API) выглядит нормально?
Код из примера на сайте библиотеки.
// load source & destination
System::SharedPtr dstDoc = System::MakeObject(dir + u"destination.doc");
System::SharedPtr srcDoc = System::MakeObject(dir + u"source.doc");

// set the appended file to start on a new page.
srcDoc->get_FirstSection()->get_PageSetup()->set_SectionStart(Aspose::Words::SectionStart::NewPage);

// append the source file using the original styles found in the source file.
dstDoc->AppendDocument(srcDoc, Aspose::Words::ImportFormatMode::KeepSourceFormatting);
// save result
dstDoc->Save(dir + u"output.doc);
Re: API C++ библиотеки
От: Homunculus Россия  
Дата: 29.06.21 12:45
Оценка: 4 (1) +1
Здравствуйте, Nonmanual Worker, Вы писали:

Ну если не считать мелочи типа подчеркивания после "get" и "set", то вполне нормально. А что смущает?
Re[2]: API C++ библиотеки
От: Nonmanual Worker  
Дата: 30.06.21 09:11
Оценка:
Здравствуйте, Homunculus, Вы писали:

H>Здравствуйте, Nonmanual Worker, Вы писали:


H>Ну если не считать мелочи типа подчеркивания после "get" и "set", то вполне нормально. А что смущает?

Просто хотел узнать стороннее мнение.
Re: API C++ библиотеки
От: rg45 СССР  
Дата: 30.06.21 17:43
Оценка: +1
Здравствуйте, Nonmanual Worker, Вы писали:

NW>Всем привет!

NW>Много лет не писал ничего на С++.
NW>Сейчас столкнулся со сторонней библиотекой на С++, как вы думаете, такой код (подход,API) выглядит нормально?
NW>Код из примера на сайте библиотеки.
NW>
NW>// load source & destination
NW>System::SharedPtr dstDoc = System::MakeObject(dir + u"destination.doc");
NW>System::SharedPtr srcDoc = System::MakeObject(dir + u"source.doc");

NW>// set the appended file to start on a new page.
NW>srcDoc->get_FirstSection()->get_PageSetup()->set_SectionStart(Aspose::Words::SectionStart::NewPage);

NW>// append the source file using the original styles found in the source file.
NW>dstDoc->AppendDocument(srcDoc, Aspose::Words::ImportFormatMode::KeepSourceFormatting);
NW>// save result
NW>dstDoc->Save(dir + u"output.doc);
NW>


В зависимости от решаемой задачи, код C++ может выглядеть сильно по-разному. Если говорить вообще-вообще, то первая мысль, которая пришла мне в голову при взгляде на этот код: программист на C# напишет программу на C# на любом языке программирования.

P.S. А еще несколько напрягает вот эта лапша:

srcDoc->get_FirstSection()->get_PageSetup()->set_SectionStart(Aspose::Words::SectionStart::NewPage);

На чем основана уверенность, что, например, srcDoc->get_FirstSection() не вернет пустой указатель?
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 30.06.2021 18:02 rg45 . Предыдущая версия . Еще …
Отредактировано 30.06.2021 17:45 rg45 . Предыдущая версия .
Re[2]: API C++ библиотеки
От: Sm0ke Россия ksi
Дата: 01.07.21 08:11
Оценка:
Здравствуйте, rg45, Вы писали:

R>P.S. А еще несколько напрягает вот эта лапша:


R>
R>srcDoc->get_FirstSection()->get_PageSetup()->set_SectionStart(Aspose::Words::SectionStart::NewPage);
R>

R>На чем основана уверенность, что, например, srcDoc->get_FirstSection() не вернет пустой указатель?

А вдруг там сделано так, что first section всегда есть, даже в пустом документе?
Re[3]: API C++ библиотеки
От: rg45 СССР  
Дата: 01.07.21 08:16
Оценка:
Здравствуйте, Sm0ke, Вы писали:

R>>На чем основана уверенность, что, например, srcDoc->get_FirstSection() не вернет пустой указатель?


S>А вдруг там сделано так, что first section всегда есть, даже в пустом документе?


А вдруг, не сделано? Или сделано, но с ошибкой. Как учит горький опыт, использовать сторонние библиотеки лучше в презумпции максимального недоверия.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 01.07.2021 8:18 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.