Задать вопрос
@FastJony

Почему «код довольно сложно читать» (тестовое задание)?

Пилил тестовое задание на позицию "Experienced C# Developer".

Задача:
1. Консольное приложение на C# для поблочного сжатия и распаковки файлов с помощью "GzipStream".
2. Исходный файл делим на блоки одинакового размера по 1 метру.
3. Каждый блок сжимается и записывается в выходной файл независимо от остальных блоков.
4. Размер файлов может превышает размер оперативки.
5. Можно юзать: (Thread, Manual/AutoResetEvent, Monitor, Semaphor, Mutex)
6. Нельзя юзать: (async/await, ThreadPool, BackgroundWorker, TPL).
7. Запуск след. образом: GZipTest.exe compress/decompress [имя исходного файла] [имя результирующего файла].
8. Формат архива не важен, соответствие формату GZIP опционально.

Решение:
https://yadi.sk/d/ZULN7SW1yWq6Tw

Почему решение некачественное (по мнению проверяющего):
1. Скорость хорошая.
2. Код довольно сложно читать.
3. Почему-то от файла осталась только маленькая часть после распаковки.

Вопрос к опытным разрабам:
1. Глянув на проект, действительно ли код нечитабелен?
2. Есть ли в нем явные косяки?
3. "от файла осталась только маленькая часть после распаковки"
- сколько тестировал, проблем не было. Видит ли кто косяк в коде?

Косяк нашёл сам, всем спасибо за советы по поводу "красоты кода" :*
  • Вопрос задан
  • 470 просмотров
Подписаться 2 Простой 13 комментариев
Пригласить эксперта
Ответы на вопрос 4
bingo347
@bingo347
Crazy on performance...
Я бы в первую очередь отметил комментарии, лучше бы их не было, чем такие...
И ладно они на русском, но они рассказывают, что я по идее и так должен понять читая код.
Комментарий, если он есть, то должен отвечать не на вопрос "что делает код?", а на вопрос "зачем здесь этот код вообще нужен?". А если из самого кода не понятно "что делает код" - то код плохой.

Ну и так по мелочи, вроде единого стиля и огромных пустых пространств...
Ответ написан
GavriKos
@GavriKos
Открыл Main.cs. Куча непонятных отступов. Часть блоков под условием - с фигурными скобками, часть - без. Читать действительно сложно. Часть комментов на гитхабе даже уехала за пределы зоны просмотра.
Ответ написан
petermzg
@petermzg
Самый лучший программист
Код то читабельный, но видно что написан новичком в программировании.
Из самого простого:
...
if ((uint)e.HResult == 0x80070002) actualException = "Ошибка : Не удается найти файл - " + ((FileNotFoundException)e).FileName + ".";
                        else if ((uint)e.HResult == 0x80070057) actualException = "Ошибка : Неверно задан путь к файлу или вы ссылаетесь на устройство нефайлового типа.";
                        else if ((uint)e.HResult == 0x80070003) actualException = "Ошибка : Неверно задан путь к файлу.";
                        else if ((uint)e.HResult == 0x80030003) actualException = "Ошибка : Неверно задан путь к файлу.";
...

Что мешало:
1. использовать switch,
2. писать просто текст ошибки и уже при выводе в консоль добавлять "Ошибка : "
Ответ написан
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
Косяк нашёл сам, всем спасибо за советы по поводу "красоты кода" :*
не не не.. где же обещанное
ЗЫ. Кто пилит такое же задание, пользуйтесь :3
верни репу!.. ну или мне копию хотя бы.. критику кода по желанию - хочешь, получишь (можно в личку.. и репу, и критику. см профиль
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы