Свежие комментарии
Title | Comment |
---|---|
Не говоря о том, что тот экземпляр IO-класса, который мне пе |
Не говоря о том, что тот экземпляр IO-класса, который мне передали для IO - он остался у пользователя и можно его просто опросить "что случилос" (да, он должен состояние для этого хранить). |
А собственные исключения юзерского класса - пройдут через мо |
А собственные исключения юзерского класса - пройдут через мой интерфейс насквозь. В-общем, наверное так и надо сделать (и так уже и сделано, собственно, осталось описать) |
Ой, вот про разные компиляторы я вообще не копенгаген. Попро |
Ой, вот про разные компиляторы я вообще не копенгаген. Попробую спросить у кого-нибудь. Насчет контракта, немного смущает вот что: пользователю навязывается, что для информирования об ошибке он должен кинуть исключение, а вот в ответ ему потом придет errorCode. Если это какие-то сетевые ошибки, то как он получит о них информацию? Хотя бы в виде строчки. Я поэтому и предлагал запретить исключения, раз уж все равно сведения теряются. Тем более, если стремно полагаться на бинарную совместимость. Вот если layout объекта фиксирован, как в .NET, то ради бога. А вот например в COM фиксирован только layout интерфейса, поэтому исключения наружу не летают, ошибки передаются через глобальный объект IErrorInfo (затычка, как errno). |
Да, в регистрации ИП наибольшим гемороем было открытие счета |
Да, в регистрации ИП наибольшим гемороем было открытие счета. Т.е. в 46-й налоговой и в "статистике" - это все налаженная автоматическая процедура, а в банк я ездил четыре(!) раза. Правда с тех пор в налоговой и в ПФР бывал, а с банком только по интернету. |
1) Вывести на свой личный карточный счет ты можешь вообще вс |
1) Вывести на свой личный карточный счет ты можешь вообще все (минус плата банку за обслуживание счета). Банк это не парит вообще, во всяком случае суммы в 2 млн в год (~160 в месяц) вряд-ли кого-то сильно взволнует. 2) На УСН-6% ты должен государству 120 тыс. рублей с 2 млн (взносы в фонды поглотятся этой суммой т.к. налоги можно уменьшить на сумму взносов, но не более чем на 50%). 2б) на ОСНО - не знаю. Точно надо заплатить НДС, а как оно вообще устроено у ИП в таком случае - х.з, не интересовался. 3) Если ты вывел вообще все на свой счет - ты можешь пойти в сберкассу и через окошко заплатить налоги и в фонды. Хотя при наличии расчетного счета и клиент-банка это как-то глупо. На практике я на р/с накапливаю те самые 6%, которые причитаются государству и раз в квартал их плачу. |
я абсолютно не в теме, поэтому у меня совсем n00by вопрос: |
я абсолютно не в теме, поэтому у меня совсем n00by вопрос: предположим я регистрюсь как ИП и оказываю в 2012г услуг IT-консалтинга юрлицам и получаю на круг за год предположим 2 млн.р. на счет безналом. сколько я смогу через "перевод собственных средств" получить на свой личный карточный счет физлица в российском банке? ЗЫ. конечно же хочется видеть пример для УСН, и как максимум для ОСН, если ты "как рыба в воде" в этой теме. |
В бинарном - только под винды и мак. А stl/boost - это "баз |
В бинарном - только под винды и мак. А stl/boost - это "базовые типы", там проверять каждый чих действительно устанешь. Но LibRaw - это 3-4 вызова на файл, можно и проверить бы. |
Про компилятор я вот не вполне понимаю такую вот мелкую дета |
Про компилятор я вот не вполне понимаю такую вот мелкую деталь: у меня в LibRaw::open_datastream() передается объект производный от class LibRaw_abstract_datastream; у которого потом дергаются разные виртуальные методы. А контракт такого типа |
Ну, мысли такие: по идее контракт с пользователем по исключе |
Ну, мысли такие: по идее контракт с пользователем по исключениям ничем логически не отличается от контракта по интерфейсу, и должен оговариваться. Проще всего договорится, что исключения не летят. Т.е. например fread сообщает об ошибке возвращаемым значением или еще чем-то. И пусть пользователь сам в своем объекте это обеспечивает. |
Да, про деструкторы. Откуда берется идея, что они вообще ес |
Да, про деструкторы. Откуда берется идея, что они вообще есть? |
конкретно std::filebuf у меня внутри, но по сути ты прав. Е |
конкретно std::filebuf у меня внутри, но по сути ты прав. Есть некоторый (базовый) класс, реализующий абстракцию I/O. По семантике это FILE* (fseek, fread, fscanf) с небольшими нашлепками, которые для сути дела неважны. Но пользователь может реализовать свое, скажем для сетевого сокета (fseek придется делать чтением до нужного места, но меня это не парит). А дальше этот класс (производный от него) передается в функцию, которая собственно парсит файл с изображением. Или явно передается (пользовательский класс) или неявно (передается имя файла, а дальше на этом файле сделается одна из моих реализаций). Функция-парсер, по семантике, возвращает код ошибки. По всей видимости, все исключения, о которых она может догадываться (свои собственнные и от "фирменных" реализаций I/O) она должна перехватывать. Но что делать с неизвестными исключениями? Особенно с учетом того, что они могут просто летать от мультитредности (говорят вот pthreads в винде сделаны частично на исключениях).... |
Ну, для начала, я вообще не люблю этот язык и считаю его изб |
Ну, для начала, я вообще не люблю этот язык и считаю его избыточно сложным (и потому - уверенно знаю только некоторый subset, которым и пользуюсь). Это вообще. А в частности, возможно виноват перевод, но мне кажется, что автор намеренно пытается сделать простые вещи - сложными. Может быть вследствие сложности языка, не знаю. |
Тогда простите за вредный совет. Лично мою жизнь эта книга с |
Тогда простите за вредный совет. Лично мою жизнь эта книга сделала существенно проще. |
Вы распространяете свою библиотеку для разных -никсов в един |
Вы распространяете свою библиотеку для разных -никсов в едином бинарном виде? Потому что только в этом случае действует эта рекомендация. Те же stl и boost замечательно бросают исключения. |
Мнэээ, Полуэкт... Что-то начинает прояснятся, я видимо снача |
Мнэээ, Полуэкт... Что-то начинает прояснятся, я видимо сначала не понял. ;-) Но все равно не хватает подробностей, приходится фантазировать. У вас C++-интерфейс, из которого ничего не должно вылетать. Но внутри вашего кода исключения есть, и их надо наверху преобразовывать в errorCodes. Так? Видимо std::filebuf - это такой callback, который приходит снаружи как параметр, так? Тогда глотать его исключения (заменять на errorCode) - плохо, потеря информации, пользователь обидится. Я бы оборачивал вызовы callback-а в try-catch с последующим rethrow, а преобразование в errorCode делал только со своими исключениями. Если это возможно. Ну или пробовал бы strict-подход, как рекомендуют выше: вся чистка в деструкторах, наружу сложные объекты с такими деструкторами не торчат, и т.д. |
Долистал до 62-го совета. Гуру рекомендует исключения из би |
Долистал до 62-го совета. Гуру рекомендует исключения из библиотеки не выпускать. Вот и я так думаю. С той поправкой, что чужие (неизвестные) - пропускать через себя. |
Ну, вообще я был уверен, что наружу - только errorcode (тем |
Ну, вообще я был уверен, что наружу - только errorcode (тем более, что есть C-интерфейс, какие уж там исключения). Но примерно в то же место пользователь может просунуть свою реализацию потока ввода-вывода, со своими исключениями - и этих я уже не поймаю. Такое поведение - нормальное? Засунул что-то нестандартное - лови сам! |
Я долистал до 39-го указания и понял, что меня тошнит. Попр |
Я долистал до 39-го указания и понял, что меня тошнит. Попробую английский вариант, на русском вот этот вот "Виртуальные функции следует делать неоткрытими, а открытые - невиртуальными" ввело меня в ступор (с третьего раза понятно, что открытые - public, но я в гробу видел). Ну и вообще, первые 82 страницы - не понравились. Потому что "жизнь - богаче". |
Да, я понимаю, мне тоже было в лом начинать ее читать :) Но |
Да, я понимаю, мне тоже было в лом начинать ее читать :) Но там отдельный небольшие главы, удобно. |
С учетом того, что меня учили программированию году в 85-м и |
С учетом того, что меня учили программированию году в 85-м и на фортране, мне вряд-ли уже что-то такое поможет. Но посмотрю. |
Не, я ни разу не призываю ловить фатальные ошибки, после кот |
Не, я ни разу не призываю ловить фатальные ошибки, после которых только и остается, что ползти на кладбище. ;-) Я только о том, что наличие одновременно двух способов обработки ошибок не есть гут. Если исключению позволяется вылететь наружу, то не надо ему мешать это делать erroCode-ами. Ну, например: |
Алексей, если будет у Вас время (и желание), почитайте книгу |
Алексей, если будет у Вас время (и желание), почитайте книгу "Стандарты программирования на C++. 101 правило и рекомендация", Герб Саттер, Андрей Александреску. Очень хорошо прочищает голову, лично мне сильно помогла эта книга. |
Почему в деструкторах? Вот у меня объект LibRaw, он может о |
Почему в деструкторах? Вот у меня объект LibRaw, он может обработать много файлов. Надо ли ему ломаться и (self-)-деструктиться, если ему подсунули битый файл или такой путь в файловой системе, который не читается? То есть о деструкторе речь не идет. |
В первом комментарии есть ссылка на пост Макса, где ясно нап |
В первом комментарии есть ссылка на пост Макса, где ясно написано, что catch(...) вреден для здоровья. |
Вот Вы спрашивали про правила хорошего тона в посте? Так вот |
Вот Вы спрашивали про правила хорошего тона в посте? Так вот, ВСЕ перечисленное Вами категорически запрещается делать в обработчиках ошибок. Все это должно выполняться в деструкторах. Ссылки на объекты просто так не держать; все делать через смартпойнтеры. Исключения в потоках - это отстой, да. Видел только одно решение хорошее - в .NET Framework 4.0. |
А пользователь some_class::some_function(...) ожидает, что и |
А пользователь some_class::some_function(...) ожидает, что из нее может вылететь исключение? Если не ожидает, то вариантов нет: надо ловить все и преобразовывать в код возврата. Но при этом информация об ошибке может частично пропасть. |
Обработка ошибки - это же не только показ сообщения об этой |
Обработка ошибки - это же не только показ сообщения об этой ошибке пользователю. Надо Говорю же, я не люблю исключения т.к. это непредсказуемый, асинхронный еще один поток управления. Когда мы живем на стеке - все понятно,детерминированно и просто, хотя кода приходится писать больше, это правда. |
А как было бы проще, если бы все просто бросали исключения, |
А как было бы проще, если бы все просто бросали исключения, а строчка для показа - внутри, да? |
хреново она работает. т.е. |
хреново она работает. т.е. если кому-то повезло со стеком посылок - да, будут разумные сроки, нет - будет больше месяца ... |
наскоько все-таки PCI-3 |
наскоько все-таки PCI-3 быстрее PCI-1 ... Импорт 27.12.2011 17:50 104003 МОСКВА PCI-3 3,740 0 0 125413 МОСКВА На PCI-1 это бы заняло больше суток ... посмотрим сколько теперь займет таможня и сортировка ... |
Pages
