Re: Интерфейс vs. протокол.
От: Sorc17 Россия  
Дата: 13.04.11 21:10
Оценка: +1 -2
Я понимаю о чём вы говорите, очень интересная тема. Но пример у вас совсем не показательный ...

... в read()/write() обычно передаётся дескриптор, который создаётся с помощью open(), поэтому вызвать их перед вызовом open() значит передать им не верный дескриптор, а то что дескриптор может быть не верным это нормально: он может испортится и между вызовами read() и write(), так что они "обязаны" прореагировать не неправильный дескриптор. То есть неправильно вызвать read()/write() это значит вообще не понимать данного интерфейса, ни зачем он, ни что делает, ни даже определение функций посмотреть. Программу же не слепоглухонемой пишет, да? close() вы никак не заставите вызвать программиста, потому что нет заранее известного момента когда его нужно вызывать: может быть после последнего read()/write(), а может быть при завершении работы программы, а может быть никогда (операционная система сама закроет все дескрипторы при завершении программы).

Как вариант можно спрятать open() и close() внутрь read() и write(). Например как в функциях PHP: file_get_contents() и file_put_contents().

Полчаса лазал по http://download.oracle.com/javase/6/docs/api/overview-tree.html в поисках наиболее наглядного примера, но устал и бросил, простите.
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.