Так вопрос в том, как все таки правильно определить такую функцию.
[a, b) или [a, b]
Желательно так же и пояснения, почему выбран тот или иной вариант.
При просмотре кода, вам нужно обращаться к документации. Хорошо если она еще есть. И вместо славного программирования вы, очевидно спорите с коллегами о том как такую функцию нужно понимать, и даже создаете опрос. Конечно, очевидно что многое зависит от конкретного языка, ведь не везде можно сделать например так:
Да, логически ближе первое определение. Но встретив в коде, подумаю, что скорее второе. Потому что так удобнее во многих языках. Так что практика повлияет на то, что подумаю про реальный код :)
Я бы сказал, не «удобнее», а «привычнее». Удобнее — это то, что ближе к «логике по дефолту».
К примеру, в Haskell я бы однозначно выбрал первый вариант.
«Мне лично [a, b) как-то ближе. » — это скорее рассуждения тупенькой первокурсницы, чем матерого программера, т.к. программер руководствуется названием используемой функции (а не тем что ему «ближе») и знанием родного каждому айтишнику языка (английского, если вдруг не понятно). «inRange» — это [a,b], и никак иначе.
Наверное, потому что для создателей питона английский не родной, там будет для k in range(0,10) одназначное [a,b). Хотя можно сказать что это просто другая языковая конструкция нежели именно inRange.
Ваш мозг может сослужить вам дурную службу, потому что, видя такой код, лучше всего засомневаться и проверить. А то я знаю умельцев, у которых это может значить даже «10 подходит к промежутку от k до 0».
Мне непонятно, почему второй вариант популярней первого. Помоему, тут либо закрытый «наглухо» промежуток, либо с включением с обоих сторон, но никак не третье. (сам выбрал первый вариант, [a, b] )
НЛО прилетело и опубликовало эту надпись здесьНЛО прилетело и опубликовало эту надпись здесь
Вы видите функцию inRange(k, 0, 10) — это значит: