Вы не можете предотвратить процесс на дальнем конце канала от выхода, и если это выйдет, прежде чем Вы закончили писать, Вы получите сигнал SIGPIPE. Если Вы SIG_IGN сигнал, то Ваша запись возвратится с ошибкой - и необходимо отметить и реагировать на ту ошибку. Просто ловля и игнорирование сигнала в обработчике не являются хорошей идеей - необходимо отметить, что канал является ныне несуществующим, и измените поведение программы, таким образом, это не пишет в канал снова (потому что сигнал будет сгенерирован снова и проигнорирован снова, и Вы попробуете еще раз, и целый процесс мог продолжиться для длинный время и потратить впустую большую мощность ЦП).
public boolean userExists(...)
Я бы предпочел. Поскольку это делает ваши условные проверки больше похожими на естественный английский:
if userExists ...
Но я думаю, что нет жесткого правила - просто будьте последовательны
Целью обеспечения читабельности всегда должно быть написание кода, максимально приближенного к естественному языку. Таким образом, в данном случае лучшим выбором будет userExists
. Тем не менее, использование префикса «is» может быть правильным в других ситуациях, например isProcessingComplete
.
В данном конкретном случае первый пример - такой ужасный английский, что я вздрагиваю.
Я бы, вероятно, выбрал номер три из-за того, как он звучит при чтении в операторах if. «Если пользователь существует» звучит лучше, чем «Если пользователь существует».
Предполагается, что он будет использоваться в тестах оператора if, конечно ...
Мне нравится любой из них:
userExists(...)
isUserNameTaken(...)
User.exists(...)
User.lookup(...) != null
Чисто субъективно.
Я предпочитаю userExists (...)
, потому что тогда такие утверждения читаются лучше:
if ( userExists( ... ) )
или
while ( userExists( ... ) )
Я бы сказал userExists
, потому что в 90% случаев мой код вызова будет выглядеть так:
if userExists(...) {
...
}
, и он очень буквально читается на английском языке.
if isUserExist
и , если doesUserExist
кажутся избыточными.
Я бы пошел с помощью Userexists (), потому что 1) это имеет смысл в естественном языке, а 2) следует за условными соглашениями API, которые я видел.
Чтобы увидеть, имеет ли он смысл на естественном языке, прочитайте его вслух. «Если пользователь существует», звучит больше похоже на действительность английской фразы, чем «Если пользователь существует» или «Если пользователь существует». «Если пользователь существует», будет лучше, но «The», вероятно, лишнее в названии метода.
Чтобы увидеть, существует ли файл в Java SE 6, вы бы используете файл. Экксисты () . Похоже, это будет такой же в версии 7 . C # Использование та же конвенция , как и Python и Ruby . Надеюсь, это разнообразная коллекция, чтобы называть этот язык-агностический ответ. Как правило, я бы справился с методами именования в соответствии с API вашего языка.