- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
-(BOOL)isForEvenNumberPage
{
return self.pageNumber % 2 == 0;
}
-(BOOL)isForOddNumberPage
{
return [self isForEvenNumberPage] == NO;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−405
-(BOOL)isForEvenNumberPage
{
return self.pageNumber % 2 == 0;
}
-(BOOL)isForOddNumberPage
{
return [self isForEvenNumberPage] == NO;
}
Один очень крупный проект от заокеанского заказчика
Psionic 11.09.2014 17:41 # +2
NickPepper 11.09.2014 22:56 # +3
if([self isForEvenNumberPage] == NO && [self isForOddNumberPage] == YES)
{
NSLog(@"Diz is probably not even page number");
{
Elvenfighter 12.09.2014 00:35 # 0
defecate-plusplus 12.09.2014 01:04 # +5
не все умеют в языки с пространствами имён в 2014 году
tirinox 12.09.2014 06:31 # −1
bormand 12.09.2014 07:09 # +5
tirinox 12.09.2014 08:30 # 0
В свифте, кстати, порезали лишние префиксы перед популярными типами.
roman-kashitsyn 12.09.2014 08:41 # +5
Если пишешь приложение, от неймспейсов толку мало.
Если пишешь библиотеку, они жизненно необходимы.
Видимо, ты в основном пишешь независимые приложения, и собирать вместе кучу библиотек тебе не приходится.
bormand 12.09.2014 08:47 # +1
Но толк таки есть, когда много 3rd-party библиотек нацепляешь...
roman-kashitsyn 12.09.2014 08:58 # +2
wvxvw 12.09.2014 13:01 # 0
bormand 12.09.2014 13:11 # 0
Хм, в AMD (require.js и его братья) неплохой модульности же добились (насколько это вообще возможно в жс). Неймспейс аля модуль заключен внутри функции, которая получает аргументами модули, которые ей требуются для работы, и возвращает то, что хочет опубликовать для других.
3.14159265 12.09.2014 13:56 # +1
А если функции нужны 2 либы, и в обоих заюзан например $?
На ум приходит только всякое уродство типа:
bormand 12.09.2014 14:01 # +2
Да там вообще всё просто: А для особо кривых либ пишутся обёрточки, которые прибирают за ними говно из глобалок, и возвращают его как положено.
wvxvw 12.09.2014 14:54 # 0
- Можно избежать лексического привязывания к "импортированым" таким образом неймспейсам (пользуясь apply / this), при чем это может получиться случайно.
- Если у модуля есть побочные эффекты, тогда его не выгрузить, иначе при повторной загрузке его нужно инициализировать по-новой, и не факт, что побочный эффект будет таким же.
Например, есть у нас модуль, А, который сделал $.each = function () { ... }, а модуль Б сделал var each = $.each. Теперь от того, кто первый загрузится, мы получим разные результаты.
bormand 12.09.2014 15:25 # 0
Выгрузка модулей - это задачка на порядки сложнее их загрузки. Да и далеко не во всех задачах нужен этот hotswap. require.js даже не пытается решать эту проблему... (хотя в той же node.js горячий апдейт модулей мог бы оказаться полезным).
> Например, есть у нас модуль А, который...
Ну а зачем они начали так делать? Это же противоречит всем принципам, которые пытается навязать AMD.
Если переписать это в идиоматичном виде - модуль А создает объект, помещает в него each и прочие полезняшки, модуль B декларирует зависимость от A и получает этот объект в параметре $, после чего модуль B с чистой совестью юзает $.each(). Всё выполнится детерминированно и в правильном порядке (хотя при этом скрипты могут проходить закачку/парсинг параллельно).
bormand 12.09.2014 15:32 # 0
Если только ради hotswap'а - так проще приделать модулю две функции - инициализацию и реинициализацию (или какой-нибудь флаг). Инициализация вызывается при первой загрузке, и делает всё с нуля. Реинициализация вызывается при второй и последующих, и аккуратно апгрейдит внутренние структуры модуля. Выгрузка, как таковая, тут только навредит.
В принципе, тот же common lisp примерно так и поступает с его defvar (инициализируется только в первый раз) и defparameter (перетирается всегда).
bormand 12.09.2014 15:36 # 0
wvxvw 12.09.2014 16:58 # 0
bormand 12.09.2014 14:44 # +2
Импорт всего-всего из libA в текущую область, имхо, далеко не самая лучшая идея. Это же аналог using namespace foo в крестах или from foo import * в питоне. Ничем хорошим любовь к таким конструкциям еще не заканчивалась...
P.S. А если какие-то функции вызываются настолько часто, что цена лукапа libA.foo будет непомерно большой - их можно выписать в локальные переменные "модуля", и спокойно юзать.
3.14159265 12.09.2014 16:53 # 0
Это да.
roman-kashitsyn 12.09.2014 13:16 # 0
Если вы - разработчик emacs (или просто не лезите внутрь), то вас это не особо напрягает. Если пользоваться емаксом как основой для построения своих приложений - т.е. как библиотекой - то напрягает.
Пока мы пишем одну страничку на жс, неймспейсы нас не особо волнуют ("риально удобно, риально падсибя"). Когда нужно интегрироваться с кем-то, тут появляется необходимость.
roman-kashitsyn 12.09.2014 13:44 # 0
Просто те, кто пишет монолитные аппликухи с использованием одной большой библиотеки (подозреваю, что эппл-девелоперы относятся к этой категории), в них не особо нуждаются.
3.14159265 12.09.2014 13:49 # 0
>особенно важна возможноть вводить их локальные алиасы
Даже в архаичных сишке и жабе, применив немного смекалки можно получить и удобоваримые неймспейсы и приличные алиасы.
А вот насчёт js wvxvw выше правильно пишет:
>вместо неймспейсов появляются дополнительные операции лукапа + ненужная возможность случайно что-нибудь поменять
3_14dar 27.06.2015 22:31 # 0
3_14dar 27.06.2015 18:44 # 0
defecate-plusplus 12.09.2014 11:53 # +4
точно, 5-дюймовые лопаты не нужны, свайп не нужен, эпл знает лучше, что мне нужно, oh wait...
tirinox 12.09.2014 14:16 # 0
defecate-plusplus 12.09.2014 14:22 # +3
перегрузка операторов и лямбды не нужны
неймспейсы не нужны
мультиметоды и модульность не нужны
3.14159265 12.09.2014 17:04 # +4
>перегрузка операторов и лямбды не нужны, неймспейсы не нужны, мультиметоды и модульность не нужны
И все эти годы сишечка была и остаётся популярнее крестов.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
И ШОК! Даже сиране обжептив обогнал плюсцы. Ни спасли ни лямбды, ни auto, ни другие плюшки из нового стандарта.
Прогнило что-то в крестогосударстве....
1024-- 12.09.2014 17:31 # 0
Будем строить лазер?
roman-kashitsyn 12.09.2014 17:50 # 0
Я вот вижу, что Бубунта выкидывает Vala и много чего переписывает на крестах.
Go им, кстати, тоже полюбился. Но Logo, согласно этой статистике, опережает Go на 14 позиций. Причём в спину Go дышит PL/I. Ок.
3.14159265 12.09.2014 18:27 # 0
http://langpop.com/
>Я вот вижу, что Бубунта выкидывает Vala и много чего переписывает на крестах.
А я вот не вижу чтоб Линус выкидывал сишку и переписывал всё на крестах.
defecate-plusplus 12.09.2014 22:36 # +2
буду говорить за себя
на сишке писал только для говнодевайса из 90х, на котором ничего другого не заведется (правда там и сишка была не гцц ни разу)
и то там приходилось эмулировать ООП
отсутствие raii вынуждает избегать кучи и сложных типов, зачастую дрочка с do { } while (0) или goto ERROR
реализация сраного дерева или тем более хеш мапы уже челлендж
каждый день ковыряешь бетон лопатой, пока остальные льют кубометры из миксера
в общем, уже даже гцц на кресты переписывают, ибо мазохизм уже не в моде
inkanus-gray 13.09.2014 00:29 # 0
3.14159265 13.09.2014 00:31 # 0
inkanus-gray 13.09.2014 00:36 # +2
bormand 13.09.2014 07:02 # +1
* если смотреть не wall clock, а реально потраченные такты
inkanus-gray 13.09.2014 07:21 # 0
bormand 13.09.2014 09:06 # 0
inkanus-gray 13.09.2014 09:50 # 0
eth0 13.09.2014 14:59 # +1
Ну, например, напиши себе медиаплеер на плюсах. Слушай год музыку. Профит.
Или мы о разном?
3.14159265 13.09.2014 16:30 # +1
Например исключения с нулевой переголовой vs проверка retval после вызова каждой функции.
roman-kashitsyn 13.09.2014 17:13 # 0
Скорее за счёт шаблонов и инлайна.
3.14159265 13.09.2014 19:16 # +1
А что с ними? Перенос шаблонами расчётов в компайл-тайм, в принципе равносилен кодогенерации.
Инлайнить/анроллить компилятор сишки должны наравне с С++.
defecate-plusplus 13.09.2014 19:22 # +1
зато в ней вместо безопасных конструкторов будет тупо мемсет (и то, не всегда), что даст 1‰ выигрыша
3.14159265 13.09.2014 20:19 # 0
Кстати допустимость copy elision прописана прямо в стандарте, что поможет компилятору без сомнений выбрасывать копирующие конструкторы.
Так что еще неизвестно кто кого тут.
bormand 13.09.2014 20:22 # 0
3.14159265 13.09.2014 20:31 # 0
Уметь, не означает решиться.
Стандарт добавляет решимости компилятору выбросить сайд-эффекты конструктора, что он отважно и делает, в отличии от memcpy где непонятно что допустимо выпилить, не повлияв на логику кода.
3.14159265 13.09.2014 00:35 # 0
>каждый день ковыряешь бетон лопатой, пока остальные льют кубометры из миксера
>Сомнительная статистика.
У крестосударей ВОЗРАЖЕНИЕ очевидного статистического факта, что оказывается кресты с кучей "необходимых" фич никто особо не котирует.
А отрицание, как известно первая стадия излечения.
И вот еще забавное: кресты по ссылке выше обходят сишку только по срачепригодности:
Normalized Discussion Site Results
Normalized results from the discussion site data sets - these results are not included with the 'normalized results' above. It's interesting to note how languages like Haskell and Erlang are talked about a lot, despite scoring fairly low on the normalized popularity chart above. People are interested in them, but haven't begun to use them on a large scale yet.
Казалось бы причем тут Хаскель? Все много пиздят о его божественности, но никто на нём не пишет, ничего кроме мелких примеров.
defecate-plusplus 13.09.2014 08:58 # +2
рейтинг Craigslist очень показателен, потрясающая корреляция с реальностью
obj-c в лидерах по гитхабу - сам то в это веришь? уже смешно
ну и наконец, ладно опенсурс, я не знаю ни одной местной коммерческой конторы, которая бы писала или искала на pure c программера, начиная или продолжая какие-то свои сишные проекты
и abbyy, и kaspersky, и acronis - это крупные московские игроки, постоянно присутствующие на рынке труда - не ищут С, по тем же причинам, что я озвучил выше
про яндекс тут есть кому рассказать и без меня
если же говорить про мой нынешний отдел, то у меня всего один крестопрограммист (это гораздо меньше, чем js-петушков и жаваёбов)
если бы я его заставил перейти на сишку, сроки пришлось бы умножить на 5, большую часть времени тратить на валгринд, при этом попрощаться с кросс-платформенностью и, скорее всего, даже многопоточностью
3.14159265 13.09.2014 11:43 # 0
Не скажу что рейтинги абсолютно объективны, и если бы только в одном-джвух сишка лидировала - можно было бы поспорить.
Но ведь тенденция налицо. Три языка (C, JS, Java) с недостатком сверхважных фич (перегрузка операторов, лямбды, неймспейсы,мультиметоды и модульность) стабильно обходят кресты.
Самый объективный на мой взгляд Ohloh.
wvxvw 13.09.2014 15:02 # 0
defecate-plusplus 13.09.2014 19:45 # 0
не вижу в рейтингах кобола, и это вовсе не шутка
js и java имеют другие преимущества, ради которых их терпят
на крестах браузерное приложение не напишешь, да и bInterprise cresto beans никто так и не наваял, у них другой удел
сейчас на js можно 3д-тарасоигры делать в браузере и другие клёвые штуки, за ним будущее, и спрос на js будет только расти
а жабка - все эти ваши ынтепрайзные наработки за 20 лет дают малыми силами делать многое ценой конского потребления цпу и особенно рам
на крестах делаем то, где у жабы кишка тонка
периодически вставляем в глиняного колосса титановые суставы, либо делаем отдельные высокопрочные изделия
eth0 13.09.2014 20:35 # 0
Я год назад отмечал и обнаружил играбельность даже на сравнительно старом железе. Единственно - плохая производительность по сравнению с нативными.
Кто знает, куда оно приведёт.
inkanus-gray 13.09.2014 22:57 # +2
NPAPI. Да, придётся заставить юзера запустить инсталлятор. Да, некроссплатформенно, так что придётся выпускать несколько версий.
Альтернативы:
1. ActiveX в IE, которые устанавливаются одним кликом.
2. Питушня для .NET.
3. Гипербинарный Интернет Царя. Пока в разработке.
defecate-plusplus 13.09.2014 23:23 # 0
пока что нативного html5 хватает
со всеми его ограниченностями
3.14159265 13.09.2014 23:52 # 0
Звучит крайне многообещающе. Начинаю нетерпеливое ожидание в джесятки лет.
wvxvw 12.09.2014 20:03 # +3
guest 13.09.2014 16:37 # +2
wvxvw 13.09.2014 16:38 # +2
Psionic 12.09.2014 08:47 # +2
bormand 12.09.2014 08:49 # +3
Psionic 12.09.2014 09:02 # 0
+ (void)setUserData:(BOOL)broadcasting
fullName:(BOOL)display
enableChat:(BOOL)chat
latitude:(CGFloat)lat
longitude:(CGFloat)lon interests:(NSArray*)array
successBlock:(void(^)(void))success
authFailedBlock:(void(^)(void))authFaile d
failureBlock:(void(^)(NSError *error))failure;
1024-- 12.09.2014 09:07 # 0
bormand 12.09.2014 09:36 # +2
tirinox 12.09.2014 14:14 # 0
Можно и так. Но зачем? Если такие функции читаются, как поэзия. И подобно поэзии их нужно правильно читать, с выражением и жестикуляцией, а не бегло пробегая глазами.
Psionic 12.09.2014 15:15 # 0
guest 27.06.2015 13:57 # 0
tirinox 12.09.2014 08:54 # 0
wvxvw 12.09.2014 13:03 # +2
tirinox 12.09.2014 14:09 # +3
defecate-plusplus 12.09.2014 14:19 # +5
и доплачивают, если ничего не спиздил
absolut 13.09.2014 08:35 # +1
eth0 13.09.2014 15:13 # +1
roman-kashitsyn 13.09.2014 15:31 # +6
Менеджера?
wvxvw 12.09.2014 14:37 # +1
guest 12.09.2014 14:41 # +4
tirinox 12.09.2014 14:42 # 0
Psionic 13.09.2014 20:00 # 0
Благодаря котором так удобно перепутать скажем UIControlState и UIControlEvent.
inkanus-gray 12.09.2014 15:02 # 0
absolut 13.09.2014 08:33 # +1
inkanus-gray 13.09.2014 09:59 # +1
Хотя в Краснодарском крае и не такое бывает: https://ru.wikipedia.org/w?curid=3729184
absolut 13.09.2014 10:31 # 0
guest 11.09.2014 23:04 # +2
Qwertiy 12.09.2014 02:02 # −1
guest 13.09.2014 12:35 # +2
NickPepper 14.09.2014 00:11 # +1