Comments 17
Хоть я и тоже люблю jQuery, но должен заметить: в исходном коде той же проверки с помощью !== было бы вполне достаточно. Привязывать библиотеку ради килобайта скриптов — не самое правильное решенее.
Но сама идея правильна, многие про неё забывают.
Но сама идея правильна, многие про неё забывают.
+3
вообщемто я с вами согласен. Не стоит стрелять по воробьям из пушки. Но я jquery стал изучать совсем недавно. И это один из первых моих скрипов на нём. Просто хотел потренироваться, да и лишний раз свои знания проверить.
0
var countries = new Array('','Австралия', 'Австрия',… 'Япония');
Я потратил на решение проблемы 10 секунд и 3 байта кода, ну и конечно немного памяти. Попробуйте мне теперь доказать что вы уложились в те же рамки хотя бы по одному из параметров.
Я потратил на решение проблемы 10 секунд и 3 байта кода, ну и конечно немного памяти. Попробуйте мне теперь доказать что вы уложились в те же рамки хотя бы по одному из параметров.
0
Это из области зачем нам семантическая верстка, если страницу все равно читает браузер =) Каждый пишет как хочет, лишь бы не было багов. Просто некоторые решения кажутся более «красивыми» чем другие.
+1
Это приятней и понятней выглядит. Решить проблемы с нулевым идексом Австралии можно было двумя путями введением фиктивного нулевого элемента в список стран ( но зачем хранить избыточные данные, да и это больше напоминает латание, а не устраниение ошибки ) или же поступить по другому.
Уважаемый smartello я никому ничего не собираюсь доказывать. Я рассматривал введение фиктивного нулевого элемента, но отбросил этот вариант исходя из следующих соображений.
1) если у меня массив стран то пусть в нём храняться только страны, и никакие другие данные. (если у меня в коробочке лежат болты, то пусть там будут только болты, я не хочу ложить туда гвоздь в надежде на избержание каких — либо ошибок)
2) Пусть мой скрипт одиноково работает со всеми элементами массива от нулевого до последнего, а если скажем ошибка не только в нулевом индексе, ну и скажем что то происходит не так с последним индексом. Значит добавлять фиктивный последний элемент.
3) вариант с проверкой соответсвия не только значений ( ==) но и типов ( ===) кажется мне более уместным и более понятным нежели, введение фиктивных элементов.
Общее время которое я потратил на решение этой проблемы — около 1.5 недели
1) — 20 минут на обнаружение и выяснение причин аномального поведдения
2) — 15 минут на поиск функций различающий 0 и false
3) — 10 минут реализация на jquery
4) — 20 -30 минут на обдумывание и написание статью
и всё остальное ждал пока вылезу из минусо и смогу публиковть.
А вообще это дело вкуса и каждый пишет так как хочет. Но всё же мне кажется, что нужно стремиться к универсальности и понятности. Считаю, что вопрос как правильнее фиктивный элемент/проверка равенства типов остаётся открытым
Уважаемый smartello я никому ничего не собираюсь доказывать. Я рассматривал введение фиктивного нулевого элемента, но отбросил этот вариант исходя из следующих соображений.
1) если у меня массив стран то пусть в нём храняться только страны, и никакие другие данные. (если у меня в коробочке лежат болты, то пусть там будут только болты, я не хочу ложить туда гвоздь в надежде на избержание каких — либо ошибок)
2) Пусть мой скрипт одиноково работает со всеми элементами массива от нулевого до последнего, а если скажем ошибка не только в нулевом индексе, ну и скажем что то происходит не так с последним индексом. Значит добавлять фиктивный последний элемент.
3) вариант с проверкой соответсвия не только значений ( ==) но и типов ( ===) кажется мне более уместным и более понятным нежели, введение фиктивных элементов.
Общее время которое я потратил на решение этой проблемы — около 1.5 недели
1) — 20 минут на обнаружение и выяснение причин аномального поведдения
2) — 15 минут на поиск функций различающий 0 и false
3) — 10 минут реализация на jquery
4) — 20 -30 минут на обдумывание и написание статью
и всё остальное ждал пока вылезу из минусо и смогу публиковть.
А вообще это дело вкуса и каждый пишет так как хочет. Но всё же мне кажется, что нужно стремиться к универсальности и понятности. Считаю, что вопрос как правильнее фиктивный элемент/проверка равенства типов остаётся открытым
0
признаЮ, проверка типов правильнее, просто озвучил что первым пришло на ум, однако эту проверку можно вставить в исходный код и всё.
0
>Считаю, что вопрос как правильнее фиктивный элемент/проверка равенства типов остаётся открытым
Попробую закрыть. Фиктивный элемент — это глупость (и по идее, и по исходному скрипту, где есть обращение к длине массива и т.п.). Строгое сравнение — это… меньшая глупость, т.к. технически исправляет чужую ошибку, но не исправляет логику скрипта, коему вообще не нужна никакая проверка типов, как не нужны 2 функции вместо одной, ещё один if() и 2 выхода из isCountry. Попробуйте абстрагироваться от jQuery и от начального скрипта, напишите заново на pure javascript всего одну функцию, несколько строк, упростив логику…
Попробую закрыть. Фиктивный элемент — это глупость (и по идее, и по исходному скрипту, где есть обращение к длине массива и т.п.). Строгое сравнение — это… меньшая глупость, т.к. технически исправляет чужую ошибку, но не исправляет логику скрипта, коему вообще не нужна никакая проверка типов, как не нужны 2 функции вместо одной, ещё один if() и 2 выхода из isCountry. Попробуйте абстрагироваться от jQuery и от начального скрипта, напишите заново на pure javascript всего одну функцию, несколько строк, упростив логику…
0
Мне кажется в этом коде нарушена семантика. Отсюда и проблема. Is country можно перевести как — «страна?». То есть человек ожидает что код вернет true если страна, false, если нет. Но разработчик решил возвращать индекс в массиве, если это страна. Луче бы ввел еще одну функцию getIndex(country) было бы намного понятнее.
А вообще статья правильная. Не стоит забывать что есть ===, и зачем он нужен.
А вообще статья правильная. Не стоит забывать что есть ===, и зачем он нужен.
0
что то строчек кода сильно увеличилось и это того не стоит можно было бы в функции возвращать -1 или добавить в первый элемент массива фиктивный объект как уже предложили. И использование глобальных переменных это зло как вы думаете сколько раз может понадобится переменная с названием count :).
Еще очень распрастраненная ошибка забываеш var в цикле поставить потом можно часами сидеть и искать в чем же касяк :)
Еще очень распрастраненная ошибка забываеш var в цикле поставить потом можно часами сидеть и искать в чем же касяк :)
+1
UFO just landed and posted this here
успешно дабовилась != успешно добавилась
в список всписок стран != в список стран
обнаружил следующюю != обнаружил следующую
функция выводящия != функция выводящая
в резултате != в результате
варинат != вариант
впервую очередь != в первую очередь
крание варианты != крайние варианты
Чтож != что ж
… и т.д. и т.п., включая массу пропущенных запятых в тексте, не придираюсь, но читать тяжело. ;)
в список всписок стран != в список стран
обнаружил следующюю != обнаружил следующую
функция выводящия != функция выводящая
в резултате != в результате
варинат != вариант
впервую очередь != в первую очередь
крание варианты != крайние варианты
Чтож != что ж
… и т.д. и т.п., включая массу пропущенных запятых в тексте, не придираюсь, но читать тяжело. ;)
+2
спасибо учту, это проба пера была. А с запятыми у меня со школьной скамьи проблемы =(
+1
а еще лучше сделать не Array, но хэш. быстрее будет.
var countries={'Австралия':true, 'Аргентина':true, ...} if(countries[v]){ ... }
+1
Имо, главная проблема в том что не указан тип который должна возвращать функа. Модные языки расхолащивают разрабов в этом отношении, и ползут баги. Функа непонятно что делает — если она проверяет является ли вход страной — должна возвращать Boolean, если индекс страны — Number, и конкретно -1 в failed случае.
0
Sign up to leave a comment.
Играем в страны и немного JavaScript