Вы видите функцию inRange(k, 0, 10) — это значит:

     

    Only registered users can participate in poll. Log in, please.

    Вы видите функцию inRange(k, 0, 10) — это значит:

    • 76.3%подходят k от 0 до 10, включая 0 и 10396
    • 19.6%подходят k от 0 до 9, включая 0 и не включая 10102
    • 4.0%подходят k от 1 до 9, не включая 0 и не включая 1021
    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 35

      +1
      Например оператор BETWEEN в SQL в разных версиях ведет себя по разному:
      www.w3schools.com/Sql/sql_between.asp

      Так вопрос в том, как все таки правильно определить такую функцию.
      [a, b) или [a, b]
      Желательно так же и пояснения, почему выбран тот или иной вариант.
        +11
        between — это «между». тоесть по идее (a, b)
        in range — «в диапазоне» — больше похоже на [a, b]

        по этой логике смысл [a, b) как-то ускользает
        • UFO just landed and posted this here
            +2
            Да ёпрст, убейся.
            Или бери пример с Мицгола, он адекватно себя ведёт.
        +3
        Это значит, что автор функции не позаботился об удобности ее использования и читабельности кода другими программистами.
          0
          Что именно здесь не удобно? Можно пожалуйста поподробнее.
            0
            При просмотре кода, вам нужно обращаться к документации. Хорошо если она еще есть. И вместо славного программирования вы, очевидно спорите с коллегами о том как такую функцию нужно понимать, и даже создаете опрос. Конечно, очевидно что многое зависит от конкретного языка, ведь не везде можно сделать например так:
            1 < k < 10

            или так:
              +3
              k in range(1,10)


              Я хотел сказать, что возможно не стоит искать логику там где ее нет.

              *Видимо случайно отправил.
                +1
                Но таки везде можно
                1 < k && k< 10
              • UFO just landed and posted this here
                • UFO just landed and posted this here
                  • UFO just landed and posted this here
              –4
              КО намекает на первый вариант, как единственно логичный.
                +5
                Мне кажется нет какого-нибудь стандартизированного подхода. Мне лично [a, b) как-то ближе.
                  +1
                  Мне тоже. У меня аналогия с циклом for (int i = 0; i < 10; i++) :)
                    0
                    а у меня с next.Random(min,max)

                    опять же [min; max)
                    +1
                    Несмотря на то, что в близком мне STL обычно используется [a, b), логика всё равно выбирает первый вариант.
                      0
                      Да, логически ближе первое определение. Но встретив в коде, подумаю, что скорее второе. Потому что так удобнее во многих языках. Так что практика повлияет на то, что подумаю про реальный код :)
                        0
                        Я бы сказал, не «удобнее», а «привычнее». Удобнее — это то, что ближе к «логике по дефолту».
                        К примеру, в Haskell я бы однозначно выбрал первый вариант.
                        • UFO just landed and posted this here
                      0
                      «Мне лично [a, b) как-то ближе. » — это скорее рассуждения тупенькой первокурсницы, чем матерого программера, т.к. программер руководствуется названием используемой функции (а не тем что ему «ближе») и знанием родного каждому айтишнику языка (английского, если вдруг не понятно). «inRange» — это [a,b], и никак иначе.
                        0
                        Наверное, потому что для создателей питона английский не родной, там будет для k in range(0,10) одназначное [a,b). Хотя можно сказать что это просто другая языковая конструкция нежели именно inRange.
                      +5
                      Сперва подумаю, что [0,10].
                      Сразу вторая мысль о PHP, как о примере «великолепного» соблюдения однотипности названий и параметров функций.

                      Перестаю думать, лезу в мануал.
                        0
                        а мой мозг без сомнений выдал: «подходят k от 0 до 10, включая 0 и 10» :)
                          +1
                          Ваш мозг может сослужить вам дурную службу, потому что, видя такой код, лучше всего засомневаться и проверить. А то я знаю умельцев, у которых это может значить даже «10 подходит к промежутку от k до 0».
                          • UFO just landed and posted this here
                          0
                          Мне непонятно, почему второй вариант популярней первого. Помоему, тут либо закрытый «наглухо» промежуток, либо с включением с обоих сторон, но никак не третье. (сам выбрал первый вариант, [a, b] )
                          • UFO just landed and posted this here
                            • UFO just landed and posted this here
                              +1
                              Почему-то, второй вариант мне в голову не пришел бы сам.
                              • UFO just landed and posted this here
                                0
                                Выбрал первый вариант, так как если тип целых в языке ограничен сверху и снизу, то этот вариант единственный позволяет перебрать все значения.
                                Подсознательно склонялся ко второму.
                                  0
                                  Второй — ассоциация с циклом (i=0; i
                                    0
                                    Второй — ассоциация с циклом (i=0; i<10; i++) или k in range(0, 10) в python
                                      0
                                      думаю язык тут не малое значение имеет, т.е. язык влияет на привычки/восприятие

                                  Only users with full accounts can post comments. Log in, please.