- 1
- 2
- 3
- 4
- 5
- 6
- 7
for (var i = 0; i < result.Results.length; i++) {
data = result.Results;
if (i == 0) {
$calendarPins = jQuery.parseJSON(data[i].Markers);
GoogleMapsInitialization();
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+169
for (var i = 0; i < result.Results.length; i++) {
data = result.Results;
if (i == 0) {
$calendarPins = jQuery.parseJSON(data[i].Markers);
GoogleMapsInitialization();
}
}
Аж за душу взяло...
lorc 09.01.2015 15:47 # +1
guest 09.01.2015 21:14 # 0
bormand 09.01.2015 21:31 # +5
Даёт всем подряд?
Простите, не удержался.
1024-- 09.01.2015 21:33 # +8
guest 09.01.2015 22:35 # +1
guest 09.01.2015 22:48 # 0
http://4.bp.blogspot.com/_YtxGNf8GgRA/TOXLQN3-j0I/AAAAAAAAFUI/e1g0DOEKhv8/s1600/make_tea_not_love.png
Fike 09.01.2015 23:01 # +1
lorc 09.01.2015 23:12 # +3
Надо что бы статический анализатор шел сразу в комплекте с компилятором/интерпретатором. Так же кроме Error, Warning, Notice ввести уровень сообщений KillItWithTheFire как раз для таких случаев. После вывода сообщения - удалять файл с исходниками.
guest 09.01.2015 23:45 # +4
guest 10.01.2015 05:20 # 0
Stallman 10.01.2015 13:05 # −3
ECMA-script
guest 10.01.2015 13:11 # +2
Stallman 10.01.2015 13:19 # −4
Более того, из современных языков ECMA-скрипт самое дерьмовое дерьмо. Даже пыхпых в сравнении с ним кажется просто шедевром архитектуры.
bormand 10.01.2015 13:25 # −1
Fike 10.01.2015 13:58 # 0
guest 10.01.2015 15:46 # +2
Fike 10.01.2015 16:07 # −2
lorc 10.01.2015 17:28 # −1
Fike 10.01.2015 18:00 # 0
- И ЧТО И ЧТО В ПИТОНЕ ТОЖЕ ЕСТЬ И ИМИ ДАЖЕ ПОЛЬЗУЮТСЯ!
- В питоне есть какая-то пародия, сделанная через жопу
- А ЧТО ТЫ ХОТЕЛ ОТ ЯЗЫКА С ДИНАМИЧЕСКОЙ ТИПИЗАЦИЕЙ? ИНТЕРФЕЙСЫ НЕ НУЖНЫ!
у меня другой вопрос: вы-то вдвоем что хотели доказать?
Анонимус 15.01.2015 17:54 # 0
Есть. ABCMeta.
>> ни неймспейсов
Есть. Пекеджи и модули..
>> ни абстрактных классо
Есть. ABCMeta.
>>это надстройки библиотеки, к которым еще надо обращаться
Разумеется. Как и в любом языке без *статической* проверки типов.
Хорошо или плохо не иметь статическую проверку -- вопрос для дискуссии.
Но в пайтоне это сделано честно и внятно. А в ПХП через жопу и местами.
Потому что у пайтновца в голове ясная картина (хотя и спорная конечно), а у ПХПиста каша. Как в языке, каша в голове, каша в библиотеке.
Fike 15.01.2015 20:33 # 0
Потому что ты так сказал, ага.
Анонимус 15.01.2015 21:28 # −1
wvxvw 10.01.2015 18:11 # +3
Fike 10.01.2015 18:25 # 0
Это вообще нихуя не про конкретный язык. Это про модульность, совместимость, тестирование и все прочее веселье, от которого большинство добровольно отказывается.
wvxvw 10.01.2015 18:58 # +1
А в чем проблема с модульностью в Питоне? Там контракты можно выразить по-другому. Более того, изначально речь шла не об интерфейсах, как механизме взаимодействия, а как элементе языка. В чем проблема в Питное предоставить свою реализацию с тем же интерфейсом?
Fike 10.01.2015 20:14 # −2
Оох блядь.
Еще раз: мне нужно просто, легко и из коробки задавать контракты для реализаций, не трогая реализации вообще.
Это и есть интерфейс, откуда ты яву взял - я хуй знает, я понял бы если бы мы про аннотации говорили, которые в пыхе сделаны так же, как интерфейсы и абстрактные классы в питоне.
Да пусть он хоть валяется рядом текстовым файлом с аналогичным названием, но иным расширением.
> А в чем проблема с модульностью в Питоне?
В невозможности по-человечески сделать хотя бы более-менее защищенный механизм замены одной реализации другой, не залезая в клоаку zope.interfaces. Всегда придет еще один питонщик, нихуя не поймет, навертит свою реализацию, на половину багов он скажет, что в питоне так принято, на вторую - что писавший приложение, принимающее этот модуль, мудак и слегка гей.
> Там контракты можно выразить по-другому.
Да, мы это уже выяснили. Через клоаку стандартной библиотеки. Чтобы получить ровно тот же результат, что и в яве.
> Более того, изначально речь шла не об интерфейсах, как механизме взаимодействия
Ты мне рассказываешь, о чем я изначально имел в виду, когда писал первый комментарий? Ну охуеть теперь.
wvxvw 10.01.2015 20:50 # +1
Да, я тебе рассказываю, что ты имел в виду, потому что ты намеренно сменил тему разговора, и втираешь какую-то хуйню, которая только похожа на то, что ты говорил раньше, но на самом деле не имеет к этому отношения, тем самым запутываешь и себя и других.
При чем тут клоака стандартной библиотеки? Сама по себе возможность отложить проверку типов, в любом языке, позволяет элементарно решить задачу контрактов. Это на столько тривиально, что обычно никто себя не утруждает объяснениями очевидных вещей.
1024-- 10.01.2015 21:20 # +1
Последнее изменение этой страницы: 01:03, 30 октября 2014.
Текст доступен по лицензии Creative Commons Attribution-ShareAlike, в отдельных случаях могут действовать дополнительные условия. Подробнее см. Условия использования.
Fike 10.01.2015 21:28 # −2
roman-kashitsyn 11.01.2015 01:00 # 0
Аналогичная проблема есть в крестах - там типы в шаблонах ничем не ограничены, у них "компайл-тайм утиная типизация". Это с одной стороны гибко, с другой - большая проблема, т.к. требования к интерфейсу можно описать только в документации, и в случае проблем компилятор выдаст ошибку где-то в кишках чужого кода.
Для решения этой проблемы, собственно, и продвигают "концепты".
wvxvw 11.01.2015 01:16 # −2
Ну и понятно, что если, например, интерфейс обещает, что откроет файл, а вместо этого станет загружать его из интернета, то как бы тоже лажа получится: формально он вроде делает что-то похожее, но на самом деле скорее всего делает что-то не просто бесполезное, а еще и опасное. (Непридуманый случай).
То, что решение о соответствии интерфейсу можно отложить до момента когда это взаимодействие понадобится - это плюс, ради этого все и делалось, ради этого объекты, например, и задумывались - чтобы можно было во время выполнения кода принять более правильное решение, а не опираться на устаревшие данные.
gost 11.01.2015 19:14 # 0
LispGovno 12.01.2015 07:49 # 0
тогда регистрируй ник ТупизатионГовно и больше не тупи
Fike 10.01.2015 20:14 # 0
Что мне блядь придется лезть куда-то и читать этот ебаный интерфейс, вместо того чтобы написать implements XXX и смотреть в подсказки IDEшки.
Изоляция, single responsibility principle, отделение интерфейса от реализации, слышал о чем-нибудь таком? Все _нормальное_ программирование построено на атомарности и убийстве взаимосвязей между разными кусками кода, и сам программист тоже не должен думать о разнице между urllib, urllib2 и urllib3 (к слову о модульности в питоне), пока я пишу какой-то кусок кода, у меня должен быть просто HTTP-транспорт, который принимает на вход Х, а на выходе дает Y. Я не должен сверяться с какой-то спекой, пока пишу реализацию, мне не нужно лезть в какой-то охуевший браузер, мне нужно здесь и сейчас, прямо в этом файле видеть то, что я реализую, и если я охуенный программист, у меня все должно работать при первом же подключении модуля.
Каким образом типизация запрещает задать требования к чему-либо на уровне языка - я не знаю.
wvxvw 10.01.2015 20:57 # 0
1. предполагать, что реализован интерфейс с тем же именем, но другими методами.
2. предполагать вещи никак не связаные с интерфейсом. (Пример - сериализация в Яве, другой пример: укажи в интерфейсе необходимость того, чтобы передаваемый список был отсортированым, или чтобы функция всегда завершалась).
С другой стороны, возможность интерактивно посмотреть то, как используется мой код другим кодом дает мне больше уверенности в том, что то, что я пишу таки соответствует желаниям другого человека.
Хуйню про ХТТП транспорт читать не стал: много буков и ноль смысла.
Fike 10.01.2015 21:29 # 0
ой пиздец
wvxvw 11.01.2015 01:18 # 0
bormand 11.01.2015 01:51 # 0
Возникает она очень просто - кто-то решил улучшить интерфейс и что-то в него добавил (менять и удалять мало кто решится, а вот добавить - решаются).
Fike 11.01.2015 02:36 # 0
myaut 11.01.2015 11:29 # 0
К слову urllib2.urlopen вполне себе интерфейс - он возвращает "file-like object" - это универсальный интефейс к любому потоку - то же самое при вызове file() или использовании stringio. В PHP gzopen и fwrite несовместимы между собой (это конечно решаемая проблема, но никакими интефейсами не пахнет)
Анонимус 15.01.2015 17:56 # 0
>> вместо того чтобы написать implements XXX и смотреть в подсказки
>> IDEшки.
ну откройте же для себя ABCMeta и @abstractmethod наконец!
Вам PyCharm подстветит если Вы не реализовали нужный метод, и даже поможет реализовать его!
Fike 15.01.2015 20:31 # 0
2. Jetbrains, конечно, молодцы, но это а) абстрактный класс, а не интерфейс и б) нахуй мне писать что-то длинее, чем слово abstract перед объявлением класса?
Fike 15.01.2015 20:31 # 0
Анонимус 15.01.2015 21:27 # 0
А что близко, кстати,
>> абстрактный класс, а не интерфейс
Никакой разницы нет совершенно в данном случае. Абстрактный класс позволяет задать проверяемый статически контракт, равно как и интерфейс.
>> нахуй мне писать что-то длинее, чем слово abstract
А нахуй в других языках скобочки писать? Или слово function вместо def?
В Python и правда с ООП не всё хорошо, но так ведь у других скриптовых языков еще хужее (ну разве что руби у него выигрывает, не знаю).
guest 10.01.2015 15:49 # +1
Abbath 11.01.2015 23:44 # 0
Qwertiy 12.01.2015 10:17 # 0