|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|||||||||||
Оценка кода28.01.2020, 22:43. Показов 7104. Ответов 123
Метки нет (Все метки)
Здравствуйте, прошу вас всех оценить мой код , по возможности дать советы что так , а что не так и как это исправить либо в каком направлении смотреть , это моя первая попытка создать что-то не ради забавы , а чтобы использовать это в реальной жизни. Сразу скажу что еще не все доделал что хотел бы. Это декодер asn1.der , данные передаются в decode() в виде BLOB конвертированного в массив знаков.
header Кликните здесь для просмотра всего текста
cpp Кликните здесь для просмотра всего текста
0
|
|||||||||||
| 28.01.2020, 22:43 | |
|
Ответы с готовыми решениями:
123
Оценка кода
|
|
Just Do It!
|
||||||
| 09.02.2020, 04:06 | ||||||
|
DrOffset,
вот такую хрень я поставил, но поведение не смог распарсить, надо со свежими москами на неё заходить ![]() массивы из класса одномерные все сделал для удобства
0
|
||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 09.02.2020, 04:20 | ||
|
Собственно <исключения>, как стратегия обработки исключительных ситуаций, потому и появилась, что необходим был механизм разгрузки бизнес-логики от проверок не своего уровня. Если ситуация на слишком низком уровне абстракции вынуждает писать проверки (я подчеркиваю проверки, а не обработку) для нее на слишком высоком, то это может сказаться нелучшим образом на общей структуре проекта. Иногда на высоких уровнях просто не хватает данных, чтобы предпроверить какие-то состояния. Если же проверять на низких уровнях, то высокому уровню надо все равно как-то сообщить о полученном исключительном состоянии, что вынуждает написать еще одну проверку этого на высоком уровне. Да, это естественно не всегда критично, поэтому есть куча проектов без исключений.
Добавлено через 13 минут Да, я еще хотел бы добавить. Что предлагаю отталкиваться от ситуации, что исключения нам даны. И решаем мы задачу в контексте возможности присутствия исключений в проекте. Если начать развивать диалог в сторону централизованного отказа от исключений в С++ в любых проектах, то через некоторое время выяснится (возможно страниц через 50 в этой теме), что целесообразно было бы вообще отказаться от С++, а перейти на какой-либо язык функционального программирования, как более чистый концептуально. А там таких проблем нет вообще. Поэтому предлагаю сэкономить всем время и даже не начинать ![]() В конце концов, RAII имеет значительную свою силу именно в контексте присутствия исключений. Без них, его полезность сильно уменьшилась бы (именно поэтому в С нет RAII, ведь там нет и исключений). Вот слова Страуструпа:
2
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 09.02.2020, 12:07 [ТС] | |
|
DrOffset, так std::bad_alloc выкидывается если malloc возвращает nullptr но при этом длина больше 0?Не могу что-то найти по этому поводу. Просто что-то делать сейчас не могу тк не имею доступа к компьютеру,но задача интересная но я не стал бы использовать контейнеры точно
Добавлено через 36 секунд XLAT, так если там будет массив типа int (пример) то Ваш оператор же не сработает Добавлено через 23 минуты DrOffset, насчёт смарт поинтеров я не знаю как их применять с массива и, разве есть способ различать указывает указатель на массив данных или на один кусок переменной
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 09.02.2020, 12:51 | |||
|
ты предолжил пофиксить код, который не кидает ничего, кроме std::bad_alloc, специально для того, что бы поболтать о каких то других, не относящихся к твоему примеру экспшенах? если на bad_alloc можно забить, и ничего другого оттуда вылететь не может, то можно вообще никак не фиксить.
0
|
|||
|
Just Do It!
|
||||
| 09.02.2020, 13:13 | ||||
|
с чего вы решили что я на этом остановился? Тогда так: ![]() но тогда подождемс ... моя текущая мысль: задача эта не может быть решена без какой-либо реорганизации этого класса. а если это так, тогда я бы запретил себе делать ньюки в списке инициализации, что и явилось бы решением. Добавлено через 5 минут и как продолжение: один указатель - один класс. тогда процесс исправления можно будет сделать универсально .
0
|
||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||||||||||
| 09.02.2020, 13:50 | ||||||||||||
|
Я только говорил, что в нем потенциально возможно исключение.
0
|
||||||||||||
|
Just Do It!
|
|||
| 09.02.2020, 13:57 | |||
![]() Добавлено через 1 минуту с униками я поэксперементировал и меня это волнует. смотреть в диспетчер или есть ещё способы?
0
|
|||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||||||
| 09.02.2020, 14:03 | |||||||
1
|
|||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||
| 09.02.2020, 14:16 | |||||||
19.1), сейчас это не особо важно.То, что в этой теме акцентировали такое внимание на bad_alloc, идет в некоторый разрез с моей задумкой. Я писал об этом выше - напишу еще раз. bad_alloc не играет здесь роли, само по себе наличие исключения - играет, а то, что это конкретно bad_alloc - нет. Добавлено через 2 минуты Добавлено через 1 минуту Оставим пока в копилке. Добавлено через 1 минуту Как вы делали это раньше, без "уников"?
0
|
|||||||
|
Just Do It!
|
|||
| 09.02.2020, 14:18 | |||
|
мы же не в гугле работаем, чтобы рассуждать также как они там. вы то куда торопитесь вперёд меня, доктор же у меня экзамен принимает.
0
|
|||
|
|
||
| 09.02.2020, 14:23 | ||
|
Но подумав чуть больше: конечно да наверное все же в таких случаях как двумерный массив проще использовать просто массивы.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 09.02.2020, 14:46 | |||
|
ты понимаешь почему? который может кинуть только bad_alloc. рассматривать что-то ещё, помимо bad_alloc, в ситуации, когда ничего кроме bad_alloc быть не может - это идиотизм ты не находишь?
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 09.02.2020, 14:54 | |||
![]() Но ты сейчас скажешь, что если рассматривать только bad_alloc, то ничего делать не нужно, потому что bad_alloc никто не обрабатывает? ![]() Ладно, я помогу тебе: считай, что условия проекта такие, что мы не можем оставлять код без освобождения памяти в случае bad_alloc. Да, программа может упасть, обрабатывать bad_alloc не надо, но перед этим в ней должны вызываться все возможные деструкторы и освободиться вся возможная память.
0
|
|||
|
Just Do It!
|
||||||
| 09.02.2020, 14:57 | ||||||
|
DrOffset,
вот, можете пальчиком даже потрогать. (сорри я кое-что выкинул для рейта, если желаете можете вернуть на место)
0
|
||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 09.02.2020, 15:04 | ||
|
Как я уже говорил, достаточно трудно дать пример, который устроил бы всех.
1) Если дать код с абстрактными FooBar - обязательно кто-то скажет, что пример ничего не иллюстрирует, потому что нет предметной области, значит он надуман, значит в реальности такого не бывает 2) Если дать код из реальной предметной области, он вероятнее всего будет вообще никому не понятен, потому что вырван из контекста. 3) Этот пункт про такой код, который я дал выше. ![]() Обрабатывать bad_alloc правда было не обязательно, т.к. это и не требовалось.А так пример очень показательный. От этого примера до смартпойнтеров - рукой подать.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||||
| 09.02.2020, 15:31 | ||||||||||||||
|
причем я дал это понять с самого начала нашего диалога. и ты сразу это понял. только я никогда не утверждал: "никто не обрабатывает". я уточнил деталь: а нафига его фиксить? ты не мне, ты себе помогаешь. сначала привел дураццкий пример, и вот только сейчас начал по человечески его подправлять. я бы понял, если бы у тебя там какие то ресурсы системы захватывались. но у тебя - массив интов. пусть падает. Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
вот так должен был выглядить твой синтетический пример:
всмысле не int, а SomeType
0
|
||||||||||||||
| 09.02.2020, 15:31 | |
|
оценка кода Оценка стиля кода Оценка кода динамического двумерного массива
Оценка стиля написания кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
|
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|