|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|||||||||||
Оценка кода28.01.2020, 22:43. Показов 7248. Ответов 123
Метки нет (Все метки)
Здравствуйте, прошу вас всех оценить мой код , по возможности дать советы что так , а что не так и как это исправить либо в каком направлении смотреть , это моя первая попытка создать что-то не ради забавы , а чтобы использовать это в реальной жизни. Сразу скажу что еще не все доделал что хотел бы. Это декодер asn1.der , данные передаются в decode() в виде BLOB конвертированного в массив знаков.
header Кликните здесь для просмотра всего текста
cpp Кликните здесь для просмотра всего текста
0
|
|||||||||||
| 28.01.2020, 22:43 | |
|
Ответы с готовыми решениями:
123
Оценка кода
|
|
Just Do It!
|
||||||
| 09.02.2020, 04:06 | ||||||
|
DrOffset,
вот такую хрень я поставил, но поведение не смог распарсить, надо со свежими москами на неё заходить ![]() массивы из класса одномерные все сделал для удобства
0
|
||||||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
||
| 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
|
||||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
||||||||||||
| 09.02.2020, 13:50 | ||||||||||||
|
Я только говорил, что в нем потенциально возможно исключение.
0
|
||||||||||||
|
Just Do It!
|
|||
| 09.02.2020, 13:57 | |||
![]() Добавлено через 1 минуту с униками я поэксперементировал и меня это волнует. смотреть в диспетчер или есть ещё способы?
0
|
|||
|
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||||||
| 09.02.2020, 14:03 | |||||||
1
|
|||||||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|||||||
| 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
|
|||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|||
| 09.02.2020, 14:54 | |||
![]() Но ты сейчас скажешь, что если рассматривать только bad_alloc, то ничего делать не нужно, потому что bad_alloc никто не обрабатывает? ![]() Ладно, я помогу тебе: считай, что условия проекта такие, что мы не можем оставлять код без освобождения памяти в случае bad_alloc. Да, программа может упасть, обрабатывать bad_alloc не надо, но перед этим в ней должны вызываться все возможные деструкторы и освободиться вся возможная память.
0
|
|||
|
Just Do It!
|
||||||
| 09.02.2020, 14:57 | ||||||
|
DrOffset,
вот, можете пальчиком даже потрогать. (сорри я кое-что выкинул для рейта, если желаете можете вернуть на место)
0
|
||||||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
||
| 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 | |
|
оценка кода Оценка стиля кода Оценка кода динамического двумерного массива
Оценка стиля написания кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Альцгеймер и колоссальный объем вычислений
Programma_Boinc 08.08.2026
Альцгеймер и колоссальный объем вычислений
Сейчас по направлению болезни Альцгеймера идет колоссальный объем вычислений.
Это один из главных приоритетов проекта.
Такой массовый наплыв задач. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|