string.ToLower();
y
и как он тебе вернёт "no" ?)
Никак. А конвертер и не должен "no" возвращать, его задача - конвертировать. Для проверок валидаторы есть.
Конвертер то может и должен, но у чувака код работает иначе =)
Именно: toLower() для приведения к единой форме перед проверками, а возвращать специальные константы.
А потом во входном потоке появится русская "e" в yes, и тестировщик сломает мозги, разбираясь, что не так работает.
Выражать логические переменные через строки - мерзость изначальная.
Выражать логические переменные через строки - мерзость изначальная.
Вот доработкой такой херни сейчас занимаюсь.
Комментов - где-то 1 на пару тысяч строк кода. Документация вида
"функция создания пользователя позволяет создать пользователя; функция вывода списка на страницу выводит список на страницу".
Комментов - где-то 1 на пару тысяч строк кода. Документация вида
"функция создания пользователя позволяет создать пользователя; функция вывода списка на страницу выводит список на страницу".
Что с even не так?
Ты не смог в "!even". А в следующей строке название класса тебе ни о чем не говорит?
Ну проясни тупому, о чём оно должно мне сказать?
Происходит инверсия значения even, после чего по нему как селектору формируется строка.
Не совсем понимаю, что тут принципиально некорректного.
Не совсем понимаю, что тут принципиально некорректного.
У меня, очевидно же, вопрос не к синтаксису, а к логике.
odd и even - нечётное и чётное, варианты - тру/фолз. И тут резко автор говорит, что делаем всё резко наоборот в отношение нечётных. Чётные не трогаем. А потом полагаясь на чётность-нечётность выполняем действия.
odd и even - нечётное и чётное, варианты - тру/фолз. И тут резко автор говорит, что делаем всё резко наоборот в отношение нечётных. Чётные не трогаем. А потом полагаясь на чётность-нечётность выполняем действия.
С этими yes/no вспомнилась история, от которой до сих пор горю. Решил познакомиться с CentOS, при установке выбрал русскую раскладку клавиатуры, первая перезагрузка и... Появляется запрос, типа, если хотите продолжить работу, нужно согласиться с лиц. соглашением. Согласны? Введите "y" или "n". Весь диалог происходит на русском, раскладка тоже на русском, переключение на латиницу не работает, перепробовал все комбинации клавиш, даже caps lock, "д" или "н" не принимается, даже залогиниться и поправить раскладку невозможно. "Удалить виртуальную машину?" -> "YES"
Alt+121
Это частный случай использования текстовых ключей для выражения состояния чего-либо (коды ошибок, например).
А чтобы тестеровщик не ломал голову - нужно проверять все возможные ключи и ругаться в логи, если не один не подошел, а не надеяться на else.
А чтобы тестеровщик не ломал голову - нужно проверять все возможные ключи и ругаться в логи, если не один не подошел, а не надеяться на else.
И каждый этот частный случай - мерзость.
Состояние, выражаемое через конечные множества - выражаются перечислениями, логический тип - частный случай этого.
В нормальных языках есть изначально полноценные средства для работы с перечислениями.
Это специально сделано для того, чтобы были встроенные механизмы контроля целостности и соответствия на уровне компиляции (или интерпретации, не суть важно).
И использовать текстовые представления оных требуется только в одном случае - для выдачи в интерфейс пользователю.
Но завязывать логику, формируя обработку перечислимых типов через текстовые представления, используя текст "унутре" - за это недопрограммисты будут гореть в геене.
Если какой-либо недоязык не может корректно работать с перечислениями - используют глобальные индексные массивы в общем пространстве имён, где обрабатывается индекс.
Т.е., для логических типов 0/1 - как отсылка к false|true.
Это тоже нехорошо, но ошибок уже много меньше потенциально...
А если вы внутри логики строку передаёте как состояние перечислимого типа, то контроль целостности и соответствия вам придётся проводить каждый раз. На входе блока. И организовывать обработку исключений. А потом удивляемся, куда девается производительность...
Состояние, выражаемое через конечные множества - выражаются перечислениями, логический тип - частный случай этого.
В нормальных языках есть изначально полноценные средства для работы с перечислениями.
Это специально сделано для того, чтобы были встроенные механизмы контроля целостности и соответствия на уровне компиляции (или интерпретации, не суть важно).
И использовать текстовые представления оных требуется только в одном случае - для выдачи в интерфейс пользователю.
Но завязывать логику, формируя обработку перечислимых типов через текстовые представления, используя текст "унутре" - за это недопрограммисты будут гореть в геене.
Если какой-либо недоязык не может корректно работать с перечислениями - используют глобальные индексные массивы в общем пространстве имён, где обрабатывается индекс.
Т.е., для логических типов 0/1 - как отсылка к false|true.
Это тоже нехорошо, но ошибок уже много меньше потенциально...
А если вы внутри логики строку передаёте как состояние перечислимого типа, то контроль целостности и соответствия вам придётся проводить каждый раз. На входе блока. И организовывать обработку исключений. А потом удивляемся, куда девается производительность...
Перечисления сделаны для взаимодействия со сторонними приложениями с сохранением человекочитаемых названий полей и кодов ошибок. Классический пример - протокол HTTP. Там все поля запроса и ответа в заголовке являются текстовыми, включая дату. И да, контроль соответствия проводится каждый раз. Добро пожаловать в реальный мир за пределами коробки helloworld.
Ну ты гений оптимизации.
if(str.size() == 2)
return "no";
return "yes";
if(str.size() == 2)
return "no";
return "yes";
но ведь функция "YesConverter", а вызывается "YesConvert"
А то, что вызов происходит где-то, похоже, вне метода - это норма?
Как ты собрался метод сам в себе вызывать, без опции выхода? Наркоман штоле?
"вне метода" и "вне того же метода" - разные выражения :-)
Он тебе все "йес" да "йес",
А меж тем все ест да ест.
Отвернись — он пол-Расеи
Заглотнет в один присест!
А меж тем все ест да ест.
Отвернись — он пол-Расеи
Заглотнет в один присест!
Бесконечная рекурсия неизбежна
последняя строчка это просто пример вызова метода, который приводит к ошибочному результату.
сорри за капитанство.
сорри за капитанство.
Бля, точно. Скобка-то закрыта.
Спасибо, капитан!
Спасибо, капитан!
>написал yEs
>получил "no"
>получил "no"
у пусть я словлю минусы, но... КЭП!?
Короче этот кусок кода конвертирует слова с регистром "Yes" и "YES" в обычный вид без регистров("yes"). Типа программист поставил защиту от людской тупости невнимательности.
Но кто-то решил конвертировать слово "yES" (такая ситуация возникает, когда у человека включён капс, но он не знает об этом и пишет "Yes", но получает "yES") . Эта ситуация не предусмотрена в коде, и программа думает, что там написано "no".
Но кто-то решил конвертировать слово "yES" (такая ситуация возникает, когда у человека включён капс, но он не знает об этом и пишет "Yes", но получает "yES") . Эта ситуация не предусмотрена в коде, и программа думает, что там написано "no".
действительно
Пока не увидел что string с маленьких букв, а названия функций с заглавных, думал что это Java и не мог понять, как вообще этот код может работать корректно.
Пока не увидил string вторым же словом в коде? :)
Пока не обратил внимание, так лучше?
Проще с no учесть все комбинации, чем с yes.
NO || nO || No || no
else
yes
NO || nO || No || no
else
yes
вот вы ржете а может бизнес требования были именно такие!
Скажи "yes".
Чтобы написать коммент, необходимо залогиниться