Re[2]: Говнокод ли это?
От: YetAnotherOne  
Дата: 19.08.11 18:56
Оценка: 4 (1) +1
Здравствуйте, Lloyd, Вы писали:

L>Это просто конфетка по сравнению с тем, с чем приходится работать. Поставил бы твердую 4+.


Вы не шутите? То есть вы считаете, что это вполне нормально:

1. Поведение. Что это за класс вообще? Вроде Stream (HttpStream), но по сути дела никакой не Stream, а скорее Reader. И то сомнительно -- т.к. в нем и заголовки, и тело запроса в виде строки. Поведение размазано.

2. Парсить в этом Stream HTTP-заголовки (хотя есть класс HttpHeaders, HttpRequestHeaders, HttpResponseHeaders):

Вот:

var contentType = _headers["Content-Type"];
            if (!string.IsNullOrWhiteSpace(contentType))
            {
                foreach (var section in contentType.Split(';'))
                {
                    var parts = section.Split('=');
                    var name = parts[0].Trim();
                    switch (name.ToLowerInvariant())
                    {
                        case "charset":
                            BodyEncoding = Encoding.GetEncoding(parts[1].Trim());
                            break;
                    }
                }
            }


и вот:

  var isChunked = false;
            var chunked = _headers["Transfer-Encoding"];
            if (!string.IsNullOrWhiteSpace(chunked))
            {
                isChunked = true;
            }


и вот:


 var contentEncoding = _headers["Content-Encoding"];
                if (!string.IsNullOrWhiteSpace(contentEncoding))
                {
 switch (contentEncoding)
                    {
                        case "gzip":
                           ...
                            break;
                        case "deflate":
                            ...
                            break;



3. Вот такая конструкция:

return new HttpStream(streamReader, new HttpRequestHeaders(streamReader));


как вам? То есть в HttpStream парсим заголовки, а в HttpRequestHeaders и HttpResponseHeaders читаем поток.

4. При чтении в методе readBody закрываем основной поток. При этом иногда он будет закрыт, а иногда нет:

 using (var bodyReader = new StreamReader(stream, BodyEncoding ?? Encoding.UTF8))


5. Как вам функция deChunkeToNewStream? Не находите, что это можно написать намного проще?

6. Как вам функция setPositionToBody? И вообще насколько она уместна, если после заголовка всегда идет body?

Я все таки надеюсь что вы не вдавались в подробности. Неужели и вы так пишите (вроде как у вас неплохая подборка званий)?

Или поставили 4+ как для Junior?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.