Paks
хотя опять же с практики, если работаешь в комманде очень быстро к стилю общего кода приходишь, после того как пару раз завернут код из-за неправильного оформления его
Alfred
> когда это приходит на помощь
Когда ты не можешь удержать все приложение в голове. Когда появляются неявные зависимости, когда изменение одного влият совсем на другую штуку, про которую ты забыл. Когда появляется спагетти код, который очень ветвленый и багу даже не получается раздебажить.
Paks
а спагетти код - это длинные методы?
Alfred
Если ты один разработчик, приложение маленькое и не планирует разрастаться, и ты будешь поддерживать его всю жизнь – ок.
Alfred
а спагетти код - это длинные методы?
это запутанность. это когда ты думаешь что некий метод делает одно, а он делает что-то еще другое что ведет к далеко идущим неочевидным последствиям, о которых ты даже не подозревал
Ivan
Alfred
Вопрос был общий, про "Вот и интересно, когда это приходит на помощь"
Paks
Alfred
Ivan
Это в пользу того что нет универсальных решений и singleton не является злом всегда.
Alfred
Ivan
Я тебе привел пример что его до сих пор использует компания, благодаря которой ты в принципе имеешь работу.
Engylizium
Что такое синглтон?
q210
думаю можно привести в пример не злого синглтона тот же UIApplication
Alfred
q210
когда у тебя есть некий god-object
q210
который 100% всегда один на время жизни приложения
q210
который точно никогда никогда не придётся удалять
Ivan
В Realm есть метод default, тоже по сути singleton. Они там тоже не шарят?
q210
хотя проблемы с многопоточностью остаются
q210
тут не шарят-нешарят
Ilkhom
не вижу зла в сингелтоне если использовать прально
q210
тут баланс удобства использования против опасности
Alfred
Ivan
Ну лол
q210
ок, я вижу зло в синглтоне - невыгружаемый из памяти объект, шарящий своё состояние между всеми тредами (и позволяющий его менять обычно), который непонятно кто и когда и как использует?
q210
что может пойти не так?
q210
к которому есть доступ у всех 100500 библиотек которые подключены в твой код
q210
но удобен, сцуко
Paks
а если он никаких состояний не хранит?
Ivan
q210
к UIApplication есть
Ivan
Откуда ей вообще знать про твои классы.
q210
вопрос был "ты видишь зло в синглтонах ?"
q210
никто не уточнял чей именно синглтон
Ivan
UIApplication не твой объект
q210
и что?
q210
у реалма тоже не мой синглтон
q210
это не говорит о том, что 3rd party библиотеки не могут его использовать
Ivan
То что ты ерунду написал. У third party нет доступа к твоим объектам
q210
yup нет
q210
и что?
Alfred
Ivan
То что этот аргумент мимо
q210
ещё раз - я не говорил "почему МОЙ синглтон - плохо"
q210
я говорил "я вижу зло в синглтоне"
q210
да даже в своём синглтоне я зло вижу
q210
чего уж там
q210
представь - команда 5 человек
Ivan
Ты сразу пиши каких человек
Ivan
Если тех которые в непонятном состоянии код пишут и не могут потом сказать что они только что написали, то это одно.
q210
команда звёзд может писать на чистом ассемблере с использованием GOTO for all i care
q210
в реальном мире с реальными командами мы используем паттерны чтобы код был проще
q210
потому что большая часть процесса программирования - борьба с чёртовой сложностью
Ivan
Ты за всех зря говоришь
q210
ты прав
q210
обобщаю, увлёкся
Ivan
То у тебя singleton плохой, а у других почему то работает. То еще что то
q210
это мой опыт
q210
другого не имею
q210
возможно мне в жизни фатально не везло
Alfred
Paks
пример?
ну вот мой API, он только получает запрос и возвращает сразу ответ от сервера, ничего у себя не хранит
Alfred
Ivan
q210
ладно ребят, хорошо посидели
Ivan
Представь себе
q210
но сегодня пятница и я пойду поработаю немного)
q210
чтобы потом немного отдохнуть
Alfred
yopp
Привет! Короткий вопрос: в watchOS 3 так и не появилось возможности записывать аудио в фоне?
Alfred
мое имхо – разработка любого ios приложения идет в два этапа: (1) написать хоть как то: обычно командой из 2-3 человека, используется всё что можно, поды, афнетворкинг, синглотоны, никаких тестов. Цель: выкатить продукт-прототип, и посмотреть, взлетит или нет.
(2) если в (1) взлетело, то как правило нанимают новых людей, команда растет. Тот кто писал изначально – уходят. Те кто пришел ничего в коде не понимают. Начинется рефакторинг. Проявляются первые редкие сложные креши, которые сложно отловить. Начинаются тесты. Нанимают QA, отказываются от сторонних библиотек так как "Не может быть, в их коде тоже бывают баги и креши!". Продуктовые требования усложняются и начинается борьба за стабильность и производительность.
Еще одно имхо – те кто топят за синглтоны – не работали на этапе (2) в хорошей команде.
yopp
Поискал в API, нашел только resentAudioRecordingControllerWithOutputURL в WKInterfaceController. Но запись прерывается после того как приложение уходит в background. Может я какие-то другие API пропустил?
Paks
мое имхо – разработка любого ios приложения идет в два этапа: (1) написать хоть как то: обычно командой из 2-3 человека, используется всё что можно, поды, афнетворкинг, синглотоны, никаких тестов. Цель: выкатить продукт-прототип, и посмотреть, взлетит или нет.
(2) если в (1) взлетело, то как правило нанимают новых людей, команда растет. Тот кто писал изначально – уходят. Те кто пришел ничего в коде не понимают. Начинется рефакторинг. Проявляются первые редкие сложные креши, которые сложно отловить. Начинаются тесты. Нанимают QA, отказываются от сторонних библиотек так как "Не может быть, в их коде тоже бывают баги и креши!". Продуктовые требования усложняются и начинается борьба за стабильность и производительность.
Еще одно имхо – те кто топят за синглтоны – не работали на этапе (2) в хорошей команде.
в моем случае ты прав, в 2 этапе никогда не работал
Oleksii
интересно сколько же работало на 2-м этапе :)
Paks
они походу в чатах не сидят) а пилят) до сих пор