powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нейминг базовых классов
15 сообщений из 65, страница 3 из 3
Нейминг базовых классов
    #39492288
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmikron,

Возьмём вот этот метод WebClient.OpenRead . Возвращает поток для чтения. Будешь проверять CanRead? Или сразу будешь читать? А если CanRead вернул false? А писать в поток будешь?
Ответ на твой вопрос не однозначен, но в обшем случае я не буду делать никаких проверок.
Это только подчёркивает что нет смысла плодить интерфейсы IReadStream. Базового класса Stream kak это делает МС достаточно.
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492295
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЧаще всего потоки используются только на чтение или только на запись, а клиентам теперь приходится лишний раз проверять Stream, умеет ли он то, что от него требуется (CanRead, CanWrite, CanSeek), вместо того, чтобы выяснить это ещё на стадии компиляции (IReadStream / IWriteStream / ISeekStream).

Надеёсь мы прояснили, что на этапе компиляции этого нелзя выяснит?
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492299
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR[ ComVisibleAttribute(true) ]
public abstract class Stream : MarshalByRefObject , IDisposable

Похоже, именно поэтому.
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492305
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronоткудого у тебя возникнет эксепшен? Может кто то всё-же будет делать проверки?

У тебя метод есть, загружающий данные из потока. Что тебе даст чтение CanRead? Скажет только, что о том, что поток не читабельный. А почему не скажет. Чтобы выяснить почему, надо всё таки попробовать выполнить чтение и надеяться на то, что в исключении будет больше информации.

Будет ещё прикольней, если CanRead бросит исключение )))
Или CanRead вернёт false, а сам поток при этом вполне читабельный.

Жопа короче.


mikronЗначит всё-таки твой интерфейс ничего не гарантирует. Значит нет в нём ползы. Исползуй базовый класс Stream.

Интерфейс это контракт. Контракт это гарантии. Гарантирует. Если нет, то всеми контрактами можно подтереться.
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492308
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronОтвет на твой вопрос не однозначен, но в обшем случае я не буду делать никаких проверок.

А почему? Там ведь может быть стрим, который не умеет читать, а только писать.


mikronЭто только подчёркивает что нет смысла плодить интерфейсы IReadStream. Базового класса Stream kak это делает МС достаточно.

Я понял, твой единственный аргумент это авторитет Microsft. Раз MS так решила, значит это самый верный путь. Всё ясно.
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492310
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronhVosttЧаще всего потоки используются только на чтение или только на запись, а клиентам теперь приходится лишний раз проверять Stream, умеет ли он то, что от него требуется (CanRead, CanWrite, CanSeek), вместо того, чтобы выяснить это ещё на стадии компиляции (IReadStream / IWriteStream / ISeekStream).

Надеёсь мы прояснили, что на этапе компиляции этого нелзя выяснит?

Не выдумывай. На этапе компиляции выясняется соответствие интерфейсов. Т.е. выполнение контрактов, которые гарантируют соответствующую реализацию. Если что-то не реализовано по контракту, это ошибка разработчика, он идёт и исправляет её. Или ошибка глубже, например, сетевая ошибка, ошибка файловой системы. Сам контракт гарантирует реализацию, а не правильную реализацию.
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492389
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Я устал, я умолкаю
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492434
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttОткуда статистика? Мой опыт показывает обратное. Недавно реализовывал сервер WebDAV, жутко плевался на необходимость реализации нужного Stream отдельным классом и кучи NotImplementedException. Так что не надо выдумывать какую-то фигню.

9 лет назад тоже делал WebDAV, не представляю, нафига там нужен свой Stream....
И да, друг мой Хвост, умные люди читают из потока используя например BinaryReader.
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492436
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronhVostt,

Я устал, я умолкаю

Ну ок :)
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492438
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ9 лет назад тоже делал WebDAV, не представляю, нафига там нужен свой Stream....

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

ЕвгенийВИ да, друг мой Хвост, умные люди читают из потока используя например BinaryReader.

А конструктор BinaryReader что по-твоему принимает? Тот же Stream. Который хрен ещё его знает, умеет читать или нет. Узнаешь потом.
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492474
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
WebDAV представляет виртуальную файловую систему. В нашем случае, на деле ни файлов, ни каталогов не существует, они для каждого пользователя свои. Пользователи работают с файлами, открывая их и копируя, это реализовывается через сетевой интерфейс, который работает с потоками.
Если проводник windows может выступать клиентом WebDAV, не значит, что WebDAV "представляет виртуальную файловую систему (с)".
WebDAV - расширение HTTP и может и используется (в microsoft exchange) например для доступа к почте.

hVostt
А конструктор BinaryReader что по-твоему принимает? Тот же Stream. Который хрен ещё его знает, умеет читать или нет. Узнаешь потом.
Это да, но он и сделает все проверки, которые лень делать простому программисту :)
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492490
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЕсли проводник windows может выступать клиентом WebDAV, не значит, что WebDAV "представляет виртуальную файловую систему (с)".
WebDAV - расширение HTTP и может и используется (в microsoft exchange) например для доступа к почте.
RFC устроит?

Web Distributed Authoring and Versioning (WebDAV) consists of a set
of methods, headers, and content-types ancillary to HTTP/1.1 for the
management of resource properties, creation and management of
resource collections, URL namespace manipulation, and resource
locking (collision avoidance).
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492536
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЕсли проводник windows может выступать клиентом WebDAV, не значит, что WebDAV "представляет виртуальную файловую систему (с)".
WebDAV - расширение HTTP и может и используется (в microsoft exchange) например для доступа к почте.

Я вообще не понял к чему ты это сказал. У нас есть виртуальная файловая система, индивидуальная для каждого пользователя, мы предоставляем доступ к ней через WebDAV. Есть аналогичный доступ через веб интерфейс. При желании, можно замутить FTP интерфейс или ещё какой-нибудь.

ЕвгенийВЭто да, но он и сделает все проверки, которые лень делать простому программисту :)

То есть мало того, что я должен сделать отдельный класс, так как я не могу просто реализовать интерфейс читателя из потока, мне нужен отдельный класс. Я должен использовать ещё какой-то дополнительный класс, чтобы реализовать чтение из класса потока, который я сам же сделал. Не находишь, что это перебор?
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492674
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А мне плевать. Я работаю в одиночку
...
Рейтинг: 0 / 0
Нейминг базовых классов
    #39492677
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2А мне плевать. Я работаю в одиночку

Гыгыг
...
Рейтинг: 0 / 0
15 сообщений из 65, страница 3 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Нейминг базовых классов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]