Opened 5 years ago

Closed 4 years ago

#373 closed ожидается проверка (задача сдана)

WW #5

Reported by: tarasov.denis Owned by: Sokolov Viacheslav
Component: WW_c_io Version: 3.0
Keywords: Cc:

Description


Change History (5)

comment:1 Changed 5 years ago by Sokolov Viacheslav

Type: ожидается проверкаожидаются исправления

ReadInt: n может быть NULL?

fputc может вернуть EOF (на диске место кончилось), эту ситуацию стоит обрабатывать.

34 *n = (c << 16) + (b << 8) + a;
технический момент: вместо + можно писать | , теоретически это может работать быстрее

Было бы здорово увидеть реализацию считывания с минимальным количеством копирования кода;
savebin, savetext также легко реализуются с помощью apply (и тоже хорошо бы избавиться от дублирования кода).

В случае PointsCount лучше результат хранить в типе size_t.

В данный момент работает корректно (когда нет проблем с записью), это главное.

comment:2 Changed 5 years ago by tarasov.denis

Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:3 Changed 5 years ago by Sokolov Viacheslav

Type: ожидается проверкаожидаются исправления

static здесь лучше не использовать, потому что в многопоточной среде это повлияет на корректность. Кроме того, в месте вызова можно было бы освободить место на файловой системе и попробовать позвать этот метод еще раз, текущая реализация не допускает такого сценария.

Вообще глобальных состояний лучше избегать. Вот какая-то статья на эту тему ​https://habr.com/ru/company/mailru/blog/454946/ (быстро не смог найти ничего лучше), она вызывает некоторые вопросы, но кажется, что верхнеуровнево по делу написано.

Желательный способ обработки - вернуть код ошибки и уже в месте вызова определять, что делать дальше.

comment:4 Changed 4 years ago by tarasov.denis

Type: ожидаются исправленияожидается проверка
Version: 2.03.0

Я не видел большого смысла в возврате ошибки из-за того, что эта функция используется в функции, которую мы кидаем в apply, в требованиях нам задана сигнатура таких функций -- они ничего не возвращают и применяются к каждой точке независимо. Поэтому в этом конкретном задании нам не обработать нормально ошибку и смысла в ней мало (конечно, в общем случае это разумно).

comment:5 Changed 4 years ago by Sokolov Viacheslav

Resolution: задача сдана
Status: assignedclosed
Note: See TracTickets for help on using tickets.