Конференция "Прочее" » Стиль написания кода
 
  • asail © (19.02.17 19:06) [60]

    > Inovet ©   (18.02.17 09:35) [57]

    > а так им просто лень записывать

    А за зарплатой им не лень приходить?
  • Kerk © (22.02.17 12:40) [61]
    Проблема в том, что в нашем мире, где больше одного алфавита, регистронезависимое сравнение двух строк штука настолько ненадежная, что если с этим можно не связываться, то лучше не связываться.

    Так-то мне самому удобнее мыслить регистронезависимо, но жизнь не всегда делает так, как мне удобно.
  • Германн © (23.02.17 03:02) [62]

    > Kerk ©   (22.02.17 12:40) [61]
    >
    > Проблема в том, что в нашем мире, где больше одного алфавита,
    >  регистронезависимое сравнение двух строк штука настолько
    > ненадежная, что если с этим можно не связываться, то лучше
    > не связываться.
    >
    > Так-то мне самому удобнее мыслить регистронезависимо, но
    > жизнь не всегда делает так, как мне удобно.
    >

    Поясни сию глубокую проблему.
  • Inovet © (23.02.17 03:08) [63]
    > [62] Германн ©   (23.02.17 03:02)

    Я тут встряну. Мыслить надо регистрозависимо. Мы ведь в писменной речи регистры стараемся выдерживать, особенно в немецких языках. В коде тоже не лишнее.
  • Германн © (23.02.17 03:30) [64]

    > Inovet ©   (23.02.17 03:08) [63]
    >
    > > [62] Германн ©   (23.02.17 03:02)
    >
    > Я тут встряну. Мыслить надо регистрозависимо. Мы ведь в
    > писменной речи регистры стараемся выдерживать, особенно
    > в немецких языках. В коде тоже не лишнее.
    >  

    В коде чего?
    Письменная речь это одно. Текст для компилятора это другое.
  • Inovet © (23.02.17 03:37) [65]
    > [64] Германн ©   (23.02.17 03:30)
    > Текст для компилятора это другое.

    Текст кода для человека, а если и компилятор помогает, так ещё лучше.
  • Kerk © (23.02.17 10:36) [66]

    > Германн ©   (23.02.17 03:02) [62]

    Я отвечу песней.

    function Test: Boolean;
    begin
     Result := 'We will rock you' = 'We will rock you';
    end;

    function Test2: Boolean;
    begin
     Result := 'WE WILL ROCK YOU'.ToLower = 'We will rock you'.ToLower;
    end;


    Первая функция всегда возвращает True. Результат выполнения второй функции зависит от локальных настроек компьютера, на котором программа выполняется.
  • Игорь Шевченко © (23.02.17 10:48) [67]
    Kerk ©   (23.02.17 10:36) [66]


    > Результат выполнения второй функции зависит от локальных
    > настроек компьютера, на котором программа выполняется.


    Если не трудно, приведи пример, когда локальные настройки компьютера разным образом переводят в нижний регистр символы латинского алфавита ?
  • Inovet © (23.02.17 10:51) [68]
    > [66] Kerk ©   (23.02.17 10:36)

    Я совсем не понял - какое отношение строковые константы имеют к идентификаторам?
  • Kerk © (23.02.17 11:01) [69]

    > Игорь Шевченко ©   (23.02.17 10:48) [67]
    > Если не трудно, приведи пример, когда локальные настройки
    > компьютера разным образом переводят в нижний регистр символы
    > латинского алфавита ?

    В турецком, как минимум. Там
    'I'.ToLower <> 'i'



    Вот как там эта буква работает (внимательно смотрим на первую букву):
    "INTEGER".ToLower = "&#305;nteger"
    "integer".ToUpper = "&#304;NTEGER"




    > Inovet ©   (23.02.17 10:51) [68]
    >
    > > [66] Kerk ©   (23.02.17 10:36)
    >
    > Я совсем не понял - какое отношение строковые константы
    > имеют к идентификаторам?

    А идентификаторы - это не строки? Имена файлов - это не строки?
  • Inovet © (23.02.17 11:04) [70]
    > [69] Kerk ©   (23.02.17 11:01)
    > А идентификаторы - это не строки? Имена файлов - это не
    > строки?

    Если так обобщать, то однозначно регистрозависимые должны быть компиляторы. Я только за.
  • Игорь Шевченко © (23.02.17 12:36) [71]
    Kerk ©   (23.02.17 11:01) [69]

    Это для юникода ? Ты все-таки настройки скажи, любопытно проверить, как не работает регистронезависимое сравнение для нетурецких текстов.
  • ухты © (23.02.17 12:37) [72]
    У всех свое, с этим не поспорить, кому то так кому то эдак.
    Мы достаточно легко и не принужденно отличаем mySuperPuperVar от mysuperpupervar, ни каких проблем не испытываем. И когда пишем на шарпе это помогает, а возможности ИДЕ только в плюс.
  • Kerk © (23.02.17 12:52) [73]

    > Игорь Шевченко ©   (23.02.17 12:36) [71]

    Конечно юникод, сейчас везде юникод :)

    Вот тут подробно:

    The Motivation: The Turkish-I Problem
    https://msdn.microsoft.com/en-us/library/ms973919.aspx#stringsinnet20_topic5

    Воспроизвести легко:

    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US")
    Console.WriteLine("Culture = {0}",
      Thread.CurrentThread.CurrentCulture.DisplayName);
    Console.WriteLine("(file == FILE) = {0}",
      (String.Compare("file", "FILE", true) == 0));

    Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
    Console.WriteLine("Culture = {0}",
      Thread.CurrentThread.CurrentCulture.DisplayName);
    Console.WriteLine("(file == FILE) = {0}",
      (String.Compare("file", "FILE", true) == 0));


    Culture = English (United States)
    (file == FILE) = True
    Culture = Turkish (Turkey)
    (file == FILE) = False

  • Kerk © (23.02.17 12:54) [74]

    > как не работает регистронезависимое сравнение для нетурецких
    > текстов.

    Оно, кстати, работает. Просто работает по-турецким правилам. Которые внезапно отличаются от привычных нам.
  • Inovet © (23.02.17 13:21) [75]
    > [72] ухты ©   (23.02.17 12:37)
    > mySuperPuperVar от mysuperpupervar

    Второе вырвиглазное и выносмозгное.
  • Inovet © (23.02.17 13:26) [76]
    > [73] Kerk ©   (23.02.17 12:52)
    > (file == FILE) = True

    Пардон, а это что за кострукция. Что она делает?
  • Kerk © (23.02.17 13:58) [77]

    > Inovet ©   (23.02.17 13:26) [76]

    Это не конструкция, это строка вывода программы указанной выше :) Результат сравнения двух строк.
  • Inovet © (23.02.17 14:09) [78]
    > [77] Kerk ©   (23.02.17 13:58)

    Теперь понял.:)
 
Конференция "Прочее" » Стиль написания кода
Есть новые Нет новых   [134431   +10][b:0][p:0.001]