|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|||||||||||
Оценка кода28.01.2020, 22:43. Показов 6987. Ответов 123
Метки нет (Все метки)
Здравствуйте, прошу вас всех оценить мой код , по возможности дать советы что так , а что не так и как это исправить либо в каком направлении смотреть , это моя первая попытка создать что-то не ради забавы , а чтобы использовать это в реальной жизни. Сразу скажу что еще не все доделал что хотел бы. Это декодер asn1.der , данные передаются в decode() в виде BLOB конвертированного в массив знаков.
header Кликните здесь для просмотра всего текста
cpp Кликните здесь для просмотра всего текста
0
|
|||||||||||
| 28.01.2020, 22:43 | |
|
Ответы с готовыми решениями:
123
Оценка кода
|
|
Just Do It!
|
||||||
| 09.02.2020, 04:06 | ||||||
|
DrOffset,
вот такую хрень я поставил, но поведение не смог распарсить, надо со свежими москами на неё заходить ![]() массивы из класса одномерные все сделал для удобства
0
|
||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
||
| 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
|
||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
||||||||||||
| 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
|
|||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
|||||||
| 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
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
|||
| 09.02.2020, 14:54 | |||
![]() Но ты сейчас скажешь, что если рассматривать только bad_alloc, то ничего делать не нужно, потому что bad_alloc никто не обрабатывает? ![]() Ладно, я помогу тебе: считай, что условия проекта такие, что мы не можем оставлять код без освобождения памяти в случае bad_alloc. Да, программа может упасть, обрабатывать bad_alloc не надо, но перед этим в ней должны вызываться все возможные деструкторы и освободиться вся возможная память.
0
|
|||
|
Just Do It!
|
||||||
| 09.02.2020, 14:57 | ||||||
|
DrOffset,
вот, можете пальчиком даже потрогать. (сорри я кое-что выкинул для рейта, если желаете можете вернуть на место)
0
|
||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
||
| 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 | |
|
Помогаю со студенческими работами здесь
100
оценка кода Оценка стиля кода Оценка кода динамического двумерного массива
Оценка стиля написания кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
[golang] Breadth-First Search
alhaos 19.05.2026
BFS (Breadth-First Search) — это базовый алгоритм обхода графа в ширину, который поуровнево исследует все связанные вершины. Он начинает с выбранной точки и проверяет всех соседей, прежде чем. . .
|
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера»
Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит.
Придуман Биллом Госпером в 1970-х, опубликован в. . .
|
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb">
<style>
<!]>
</ style>
<g id="bush">
</ g>
</ svg>
function fn(){
let rost;/ / высота древа
let xx=165,yy=210,w=256;
|
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов,
содержащихся в реализации модуля. По-умолчанию все члены модуля доступны:
module Foo
let x = 10
let boo () = printfn "boo"
. . .
|
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|