Здравствуйте, Доктор ТуамОсес, Вы писали:
ДТ>Тогда почему Вы обиделись, когда я недвусмысленно намекнул, что с++ — это, вообще говоря гавноязык (хоть С++ программисты и являются самой многочисленной среди всех программистов группой)?
Чтоб оскорблять язык надо хотя бы поработать на нем достаточно долгое время на серьезных проектах.
Здравствуйте, Доктор ТуамОсес, Вы писали:
ДТ>Почитал я Вас ребята и от души поржал. ДТ>Вы называете "гавнокодом" вполне приличный код. ДТ>Говорите что это "ужас", "кошмар"? ДТ>А как Вам ЭТО?
ДТ>Это очень читабельно? ДТ>Это не "ужас"?
ДТ>Тем не менее это реальный код из микрософтовского инклуда c:\Program Files\Microsoft Visual Studio\VC98\Include\COMDEF.H студии MSVC++ 6.0 ДТ>
Дохтур, открой свою книжку с вопросами по С++ и повтори следующие моменты:
Здравствуйте, YetAnotherOne, Вы писали:
YAO>Как вы считаете, является ли данный класс говнокодом?
Мммм... няма! Руки чешутся отрефакторить.
А ведь с настоящим говонкодом вместо желания рефакторить возникает стойкое желание выкинуть и написать заново.
Так что пациент скорее жив чем мертв, поставлю 4
-----
Любимая фраза физика-теоретика: "Вот видите, мы ошиблись всего лишь на порядок".
ДТ>Это очень читабельно? ДТ>Это не "ужас"? ДТ>Тем не менее это реальный код из микрософтовского инклуда c:\Program Files\Microsoft Visual Studio\VC98\Include\COMDEF.H студии MSVC++ 6.0
Это автосгенеренный заголовочный файл — он не предназначен для чтения.
_FR>Учитывая же ошибки в коде (отсутствие проверок в стриме и то, что стрим может закрыться после того, как бдует передан в этот код) ценность его чуть больше нуля.
Почти со всем согласен. Но вот по этой части вопрос — ну, может быть эксепшен, и что?
using корректно всё освободит.
А если сам стрим будет закрыт где-то еще... Ну, bad luck.
Как ты предполагаешь от этого застраховаться? Копию сделать для начала? А если стрим закроют в процессе создания копии?
ИМХО, надуманная претензия..
DD>Увольнять любого, кто пишет код и комментарии не на английском.
тут есть исключение: когда код связан с обработкой (неанглоязычных) текстов, и комментарии поясняют какой именно кейс обрабатывается. Что-то типа такого.
Здравствуйте, catBasilio, Вы писали:
B>Здравствуйте, DorfDepp, Вы писали:
DD>>Здравствуйте, YetAnotherOne, Вы писали:
DD>>Увольнять любого, кто пишет код и комментарии не на английском.
B>А что не так с комметариями? По опыту могу сказать что так как девелоперы — народ русскоязычный то в цепочке
Кстати, это тема! Надо всем договориться писать коментарии тока на русском языке, тогда другим поддерживать наш код будет труднее и спрос на русских разрабов вырастет.
Здравствуйте, Nik_1, Вы писали:
N_>Здравствуйте, catBasilio, Вы писали:
B>>Здравствуйте, DorfDepp, Вы писали:
DD>>>Здравствуйте, YetAnotherOne, Вы писали:
DD>>>Увольнять любого, кто пишет код и комментарии не на английском.
B>>А что не так с комметариями? По опыту могу сказать что так как девелоперы — народ русскоязычный то в цепочке
N_>Кстати, это тема! Надо всем договориться писать коментарии тока на русском языке, тогда другим поддерживать наш код будет труднее и спрос на русских разрабов вырастет.
Ви нид ту гоу дипер. Тогда уж нужно и переменные, и имена ф-ций и т.д. на русском называть. Либо Прямоугольник::Размер(), либо Prjamougoljnik::Razmer(). 1-ый вариант студия, с++ переваривает.
Здравствуйте, DorfDepp, Вы писали:
DD>Увольнять любого, кто пишет код и комментарии не на английском.
В России/Украине/Молдове можно сделать проект дешевле всего. Самая дешевая раб. сила (индусов в топку -- с ними отдельный разговор). Так что если проект не планируется никуда аутсорсить -- вполне нормальный вариант комментировать на русском.
Здравствуйте, Nik_1, Вы писали:
N_>Кстати, это тема! Надо всем договориться писать коментарии тока на русском языке, тогда другим поддерживать наш код будет труднее и спрос на русских разрабов вырастет.
На них и так спрос большой. Только мало нормальных.
Здравствуйте, 0K, Вы писали:
0K>Здравствуйте, Nik_1, Вы писали:
N_>>Кстати, это тема! Надо всем договориться писать коментарии тока на русском языке, тогда другим поддерживать наш код будет труднее и спрос на русских разрабов вырастет.
0K>На них и так спрос большой.
Вот и надо поддерживать его чтоб так было всегда 0K>Только мало нормальных.
вы просто неумеете их искать.
Здравствуйте, 0K, Вы писали:
0K>Самая дешевая раб. сила (индусов в топку -- с ними отдельный разговор).
Нууу... почему так? Интересные жизнерадостные люди. Пишут код, поют, танцуют. По крайней мере не ходят с угрюмыми лицами, словно кто-то помер, как некоторые.
Здравствуйте, YetAnotherOne, Вы писали:
YAO>Как вы считаете, является ли данный класс говнокодом? Если бы вам предложили поддерживать проект с подобным кодом, вы бы были в восторге или огорчились бы? По сравнению с качеством кода в вашей конторе хуже или лучше? Во сколько бы оценили по 5-ти бальной шкале?
Здравствуйте, _FRED_, Вы писали:
_FR>Что видно здесь: какие-то (private) методы названы в камеле, какие-то (internal) в паскале. Это в топку.
Это начальство из явы
_FR>Свойство, возвращающее string и при этом которое [CanBeNull] туда-же. Строковое свойство не должно возвращать null. Вместо него надо возвращать String.Empty, что бы избавить вызывающего от не нужных проверок (а когда проверка нужна, то проверка на null и на String.IsNullOrEmpty() — не велика разница). К тому же, если свойства реализованы явно (а не автосвойствами) принято снабжать get-accessor атрибутом [DebuggerStepThrough]. Без этого не редко отладка превращается в чёрте-что.
Вот то что в черте знает что — согласен.
_FR>Дальше — разбить большие методы на несколько поменьше было бы полезно: невооружённым взглядом видно, что, например, вынесение вычисления энкодинга никому не помешает.
Нельзя.
_FR>Литералы так же полезно объявить заранее в виде констант, хотя бы в самом методе. Захардкоженный текст сообщений об ошибках я ещё почему-то могу понять, если он на _английском_, но на русском такое категорически не переваривается.
Ну нельзя же
_FR>Вообще, если окинуть взглядом весь класс, видно, что вся его работа заключается в том, что бы из пары (StreamReader) получить тройку (HttpHeaders, string, Encoding). При этом зачем-то используются пара статических методов и один экземплярный, который меняет поля объекта, которому принадлежит. Я бы так и написал несколько бы статических методов, которые вычисляют
Ну не так уж и явно
_FR> _FR>HttpHeaders в зависимости от того, какая фабрика вызвана: ParseRequest или ParseResponse _FR>Encoding по вычесленному выше HttpHeaders _FR>string и энкодинг по стриму, хидерам и энкодингу из хидеров. _FR>
_FR>Получилось бы три независимых метода. Вызвал их по очереди (не в конструкторе), получил три переменных, после этого создавай неизменяемый объект из трёх полей и возвращай его.
Да там ошибок то нет (логических)
_FR>Учитывая же ошибки в коде (отсутствие проверок в стриме и то, что стрим может закрыться после того, как бдует передан в этот код) ценность его чуть больше нуля.