Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Резюме для программиста

14.08.21 11:23
Re: Резюме для программиста
 
alex445 местный житель
в ответ AlexNek 13.08.21 22:41, Последний раз изменено 14.08.21 11:58 (alex445)
Конкретно с Вами не получилось бы, так как мы на разных островах живем. Это нужно искать фирму с вашего острова - это не очень сложно смущ


Но в принципе хотелось бы иметь следующее:


class BigEndianBinaryReader : BinaryReader

Кусок кода чтения данных с устройства я писал вовсе не для создания этакой библиотеки, чтобы могли другие пользоваться, а чтобы был лишь минимально работающий вариант. Но про ваш запрос "чтобы могли другие пользоваться" лучше бы пояснили как сейчас с самого начала - было бы понятнее. Возможно те, кто с вами работают, всегда делают расширения в виде классов, т.к. уже привыкли, чего вы от них хотите. Мне это непонятно, а когда с первого же вопроса играют в угадайку, то работать сложно. Если бы я с вами давно работал, то были бы понятны ваши претензии.


Далее, код чтения данных у меня использует TcpClient и его внутренний член NetworkStream (получен через GetStream). Пример чтения данных скопировал у Джона Скита где-то в каком-то месте:


while (_doWork)
{
    // Here it can be required to pause the current thread for a while,
    // because there can be no data in the client's stream if you will
    // try to read it nonstop. Something like
    // Thread.Sleep(30);
    


    // _client is of TcpClient type
    if (_client.Available > 0)
    {
        _buffer = new byte[_client.Available];
        
        // _stream was obtained from TcpClient.GetStream()
        _stream.Read(_buffer, 0, _buffer.Length);
        
        // RawData is of List<byte> type
        RawData.AddRange(_buffer);
    }
}


Далее, делать расширение стандартного класса только для случая BigEndian я считаю лишним. Вариантов вообще всего два при любых случаях - big- or little-endian. Кроме того, в большинстве случаев порядок байт сети - big-endian. Стоит ли всего для двух случае писать свои расширения всех стандартных классов работы с потоками? Стоит ли вообще писать расширение, где добавлена только одна маленькая деталь - всего лишь инверсия байт всех типов, когда их сериализуешь в байтовый массив? Как вы думаете, почему разработчики стандартных классов просто не добавили выбор endianness параметром в конструкторы этих классов, если вопрос стоит лишь в инверсии байт?

 

Перейти на