Философия разработки на примере синглтона

User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Философия разработки на примере синглтона

Post by АццкоМото »

В соседнем топике навели на мысль, которая уже давно полуоформившаяся бьется в сознании. Синглтон - это просто пример для иллюстрации.

Вот давайте представим, что мы разрабатываем какой-то софт, и у нас есть нечто, что логично бы сделать синглтоном. Ну и мы привычными движениями пальцефф фигачим класс, а в нем - метод getInstance(), который смотрит, есть ли уже существующий инстанс и возвращает его, если есть, или создает и возвращает. Делов на три копейки.

Но ничего ли мы не забыли? Ах, да! Всенепременно нужно сделать конструктор приватным, чтобы никто не создал объект напрямую. Ну, тут от языка зависит, но во многих - именно так.

И вот тут возникает интересная идиосинкразия. Я уверен, что если проект двигаю только я - это совершенно лишнее. Я-то в курсе и не буду делать new вместо getInstance(). А даже несколько символов типа private Singleton() { /* Cant touch this */ } - это уже лишняя работа и даже тут можно умудриться сделать баг. Но если не дай Г-ди показать потом свой "ленивый" код нии..цца спецу, смешает ведь с дерьмом. И, действительно, для публичного кода приватный конструктор необходим

Если мыслить шире, то подобные решения - делать "как положено" или забить - мы делаем по 100500 раз в день. И я настаиваю, что для проектов, делающихся в одно рыло (или в 2-3 рыла, если все хорошо с взаимопониманием), то забить - правильное решение. Но, подозреваю, 146% народа со мной несогласны.

Ваше мнение, товарищь Маузер?
Мат на форуме запрещен, блдж!
_newcomer_
Уже с Приветом
Posts: 158
Joined: 29 Aug 2013 11:58

Re: Философия разработки на примере синглтона

Post by _newcomer_ »

АццкоМото wrote:Ваше мнение, товарищь Маузер?
Пример с синглтоном не очень хороший, т.к. уже давно считается правильным (мы же про Java? разве есть еще что-то :D ) делать его через enum. А это куда проще и отмазка про "так быстрее было" уже не работает :-)

Если есть хоть небольшое желание вывести приложение "в массы" - я бы таки заморачивался "как правильно".
Вдруг какие помощники найдутся, которые не зная "блистательной архитектуры под себя" все завалят :-)
Время ресурс ограниченный, не переписывать же резко с нуля если "стрельнул внезапно" проект.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Философия разработки на примере синглтона

Post by АццкоМото »

_newcomer_ wrote:
АццкоМото wrote:Ваше мнение, товарищь Маузер?
Пример с синглтоном не очень хороший, т.к. уже давно считается правильным (мы же про Java? разве есть еще что-то :D ) делать его через enum. А это куда проще и отмазка про "так быстрее было" уже не работает :-)
Джава не джава - фиг его знает. В понедельник напрягать моск думками, как оно в других йызыках - это выше моей лени
А вот "правильнее через enum" - отличный пример кододрочерства. Мне вот тупо так непривычно и я вертел на своем малахиовом стержне все эти "считается"
_newcomer_ wrote:Если есть хоть небольшое желание вывести приложение "в массы" - я бы таки заморачивался "как правильно".
Вдруг какие помощники найдутся, которые не зная "блистательной архитектуры под себя" все завалят :-)
Время ресурс ограниченный, не переписывать же резко с нуля если "стрельнул внезапно" проект.
Безусловно, если маячит публичная контрибуция в проект - надо делать правильно. А не маячит - ну чего напрягаться-то?
Опять же, если проект "внезапно стрельнул", то инвесторы дадут свои миллионы, чтобы студент подшаманил, чтобы "как учили". Снова самому попой шевелить не надо
Мат на форуме запрещен, блдж!
User avatar
turic
Уже с Приветом
Posts: 418
Joined: 11 Mar 2014 03:30
Location: Spb->SFBA

Re: Философия разработки на примере синглтона

Post by turic »

АццкоМото wrote: Если мыслить шире, то подобные решения - делать "как положено" или забить - мы делаем по 100500 раз в день.
Нужно в себе выработать в себе привычки типовые, тривиальные вещи писать аккуратно, однотипно, понятно и пр. Это как гигиена. К ней привыкаешь и не задумываясь соблюдаешь
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Философия разработки на примере синглтона

Post by АццкоМото »

turic wrote:
АццкоМото wrote: Если мыслить шире, то подобные решения - делать "как положено" или забить - мы делаем по 100500 раз в день.
Нужно в себе выработать в себе привычки типовые, тривиальные вещи писать аккуратно, однотипно, понятно и пр. Это как гигиена. К ней привыкаешь и не задумываясь соблюдаешь
Я уверен, что вы считаете свою гигиену безупречной. Но найдется человек, который скажет, что вы грязнуля. Кто-то залупку моет 5 раз в день, кто-то подмышки и лобок бреет каждую неделю. Коля Фоменко, например, не может целый день ходить в одних джинсах. Я, например, много лет не носил трусы. Все относительно

Поэтому я бы не стал безапелляционно выдавать фразы типа "нужно в себе выработать...". Или как минимум будьте готовы ответить - кому нужно и зачем
Мат на форуме запрещен, блдж!
Berlaga
Уже с Приветом
Posts: 1008
Joined: 24 Mar 2010 21:14
Location: SFBA

Re: Философия разработки на примере синглтона

Post by Berlaga »

Для проектов типа "херак! херак! в гуглплей!!!" можно и не заморачиваться, среднее время их жизни короче, чем прелюдии к сексу у мухи-дрозофилы.

Но если творение имеет шанс прожить хотя бы год, то даже для команды из одного погромиста неоплохо бы уметь доносить информацию из прошлого. Человеку свойственно забывать детали и со временем даже не вася из соседнего кубика, а сам аффтар, ничтоже сумляще, создаст новый инстанс этого "синглтона" и будет долго чесать репу на тему #чозахерня и #каковабуянеработает.
_newcomer_
Уже с Приветом
Posts: 158
Joined: 29 Aug 2013 11:58

Re: Философия разработки на примере синглтона

Post by _newcomer_ »

АццкоМото wrote:А вот "правильнее через enum" - отличный пример кододрочерства. Мне вот тупо так непривычно и я вертел на своем малахиовом стержне все эти "считается"
Опять же - если в вашей ситуации "абы какой синглтон" работает как надо, то может и надуманная это проблема. И не нужен он там был вовсе именно как синглтон со всякими извращениями.
Да и с другими патернами такая же фигня - периодически кто-то переоценивает или притягивает за уши их. Типа слово понравилось - надо впендюрить в код :-)
"Как правильно" - это скорее необходимость, когда по другому никак/не работает. В общем по ситуации.
АццкоМото wrote:Опять же, если проект "внезапно стрельнул", то инвесторы дадут свои миллионы, чтобы студент подшаманил, чтобы "как учили". Снова самому попой шевелить не надо
Согласен, есть такой вариант. Но зачастую "миллионов еще не дали". а "студент уже нужен".
Вот тут и может облом мимо "миллионов" случится :-)

А вообще согласен с мнением выше, что если что-то привык делать "на работе" правильно (ну приходится себя заставлять, да, а то сервера попадывать будут, будь они неладны :-D), то потом уже сложнее вспомнить "как надо неправильно", чтобы оригинальностью блеснуть.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Философия разработки на примере синглтона

Post by АццкоМото »

Berlaga wrote:Для проектов типа "херак! херак! в гуглплей!!!" можно и не заморачиваться, среднее время их жизни короче, чем прелюдии к сексу у мухи-дрозофилы.
Это популярное заблуждение. Жизненный цикл моего приложения - уже около 5 лет и умирать не собирается. А им пользуются _только_ платящие клиенты, причем многие платят сотни тысяч в год. При этом я руководствуюсь именно принципом "херак! херак! в гуглплей!!!". Да, ровно один раз я облажался по полной, когда зарелизил код вида isSomeStaffEnabled() {return false; //TODO: fix it later }. Ок, mea culpa, и про старуху бывает порнуха. В целом-то все работает получше чем у многих
Одновременно я смотрю на фейсбучный апп, которым пользуются сотни миллионов человек и разрабатывают его десятки если не сотни рыл в Менло Парке, и у каждого зряплата в три моих, за хреновый синглтон их карают анально, а чтобы не сбежали им бесплатно морозят яйцеклетки. Ок. Но апп - говно. Если я кликаю на ссылку со стены и потом нажимаю back, я в 50% случаев попадаю не на тот пост, с которого уходил, а в 10% - вообще на закладку с апдейтами. Крешей лично я ФБ аппа видел больше, чем случалось крэшей с моим аппом со всеми клиентами вместе взятыми. Наверное, дело не в бобине.
И именно поэтому когда ФБ внезапно звонит мне и говорит, что интервью я прошел оказывается неплохо и айда к нам - я отвечаю, что у вас кривожопые мудаки и я согласен ими только руководить. Понятно, что они съезжают, но и мне приятно
Berlaga wrote:Но если творение имеет шанс прожить хотя бы год, то даже для команды из одного погромиста неоплохо бы уметь доносить информацию из прошлого. Человеку свойственно забывать детали и со временем даже не вася из соседнего кубика, а сам аффтар, ничтоже сумляще, создаст новый инстанс этого "синглтона" и будет долго чесать репу на тему #чозахерня и #каковабуянеработает.
Да, все так и есть, но это сильно переоцененно. Все эти уотзефаки случаются постоянно и даже с прекрасным кодом. Это часть жизни и не более того. Когд должен писаться так, чтобы про него забыть. Работает - и здорово. Случилась мелкая проблема типа "а я уже забыл" - вспоминать и фиксать. Крупная - переписать нах. Не зря же Гугл переписывает постоянно свой код - напейсать сразу много и хорошо все равно невозможно
Более того, на Васю, который теоретически будет работать с моим кодом, когда я уволюсь - мне насрать. Вот честно так.
Мат на форуме запрещен, блдж!
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Философия разработки на примере синглтона

Post by АццкоМото »

_newcomer_ wrote: Опять же - если в вашей ситуации "абы какой синглтон" работает как надо, то может и надуманная это проблема. И не нужен он там был вовсе именно как синглтон со всякими извращениями.
Да и с другими патернами такая же фигня - периодически кто-то переоценивает или притягивает за уши их. Типа слово понравилось - надо впендюрить в код :-)
Без любого паттерна можно обойтись. Вся их суть - механически скопировать чей-то опыт и размышления вместо самостоятельных раздумий и переизобретения колеса. Тем не менее, я считаю, что копировать полностью не всегда хорошо
_newcomer_ wrote:Согласен, есть такой вариант. Но зачастую "миллионов еще не дали". а "студент уже нужен".
Вот тут и может облом мимо "миллионов" случится :-)
да ладно. никто никогда не откажет в финансировании потому что приватный конструктор не определен. или еще какие-то очевидно "неправильные" вещи сделаны в коде
вообще, суть в том, что тяп-ляп код активно живет меньше, чем нужно времени для полноценного проявления эффектов гниения
Мат на форуме запрещен, блдж!
_newcomer_
Уже с Приветом
Posts: 158
Joined: 29 Aug 2013 11:58

Re: Философия разработки на примере синглтона

Post by _newcomer_ »

АццкоМото wrote:Без любого паттерна можно обойтись. ... я считаю, что копировать полностью не всегда хорошо
Согласен. Просто если заранее знаешь "4 способа реализовать синглтон" на требуемом языке - проще сообразить, какой именно менее лениво и затратно "реализовать не полностью правильно" :-)
АццкоМото wrote:
_newcomer_ wrote:Согласен, есть такой вариант. Но зачастую "миллионов еще не дали". а "студент уже нужен".
Вот тут и может облом мимо "миллионов" случится :-)
да ладно. никто никогда не откажет в финансировании потому что приватный конструктор не определен. или еще какие-то очевидно "неправильные" вещи сделаны в коде
Не не, я про ситуацию, когда "через 2-3-4 недели могут дать денег, надо успеть докрутить N фич".
И вот тут может быть необдуманное решение "пригласить студента" на уникальный проект :-)
Хотя старшие товарищи учат, что в такой ситуации наоборот надо студентов увольнять и временно записывать в чистые кодеры лидов :umnik1:
АццкоМото wrote:вообще, суть в том, что тяп-ляп код активно живет меньше, чем нужно времени для полноценного проявления эффектов гниения
Тоже такое часто встречал. Но "писать правильно" - это типа страсти к оптимизации (хотя и с лучшими последствиями) - нельзя перебарщивать, но и совсем не думать опасно.... - надо в меру :-)
Berlaga
Уже с Приветом
Posts: 1008
Joined: 24 Mar 2010 21:14
Location: SFBA

Re: Философия разработки на примере синглтона

Post by Berlaga »

АццкоМото wrote: Крешей лично я ФБ аппа видел больше, чем случалось крэшей с моим аппом со всеми клиентами вместе взятыми. Наверное, дело не в бобине.
Дело, разумеется, в другом. В сложности. Когда (и если) дойдете до миллионов пользователей - о, сколько нам открытий чудных...
АццкоМото wrote: И именно поэтому когда ФБ внезапно звонит мне и говорит, что интервью я прошел оказывается неплохо и айда к нам - я отвечаю, что у вас кривожопые мудаки и я согласен ими только руководить. Понятно, что они съезжают, но и мне приятно
Что-то мне подсказывает, что под "интервью" тут понимается обычный фон-скриннинг с проверкой на "не дебильность", но в принципе - поздравляю! даже его не все проходят.
АццкоМото wrote: Да, все так и есть, но это сильно переоцененно. Все эти уотзефаки случаются постоянно и даже с прекрасным кодом.
Случаются, но намного реже.
АццкоМото wrote: Более того, на Васю, который теоретически будет работать с моим кодом, когда я уволюсь - мне насрать. Вот честно так.
Я правильно подозревал, значит. Именно в защиту от таких "засранцев" код ревью и придумали.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Философия разработки на примере синглтона

Post by Мальчик-Одуванчик »

У меня это зависит от продуманности проекта.
Если он изначально хорошо продуман, то и пишется как-то обстоятельней что-ли
Даже юнит-тесты сами-собой присобачиваются чуть ли не на этапе проектирования.
А если шаляй-валяй кровь-из-носа к понедельнику новая фича в стиле оджайл-прогиб то и думать не хочется,
да и код соответстующий в стиле: "Клиент требует залипуху - он её получит"
А самые вылизанные оказываются домашние проекты, которые и показывать никому в планах нет.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Философия разработки на примере синглтона

Post by АццкоМото »

Berlaga wrote:
АццкоМото wrote: Крешей лично я ФБ аппа видел больше, чем случалось крэшей с моим аппом со всеми клиентами вместе взятыми. Наверное, дело не в бобине.
Дело, разумеется, в другом. В сложности. Когда (и если) дойдете до миллионов пользователей - о, сколько нам открытий чудных...
Ой, куда бы деться. У вас сверхширокая клавиатура, что подходит под растопыренные пальцы?
Во-первых, у мобильной аппы всегда пользователь ровно один.
Во-вторых, не так давно пытался подсчитать, сколько девайсов с моим кодом было продано. Выходит под миллиард. Мне этого достаточно, чтобы высокомерные россказни про сложность "миллионов" читать с издевательской улыбкой
Berlaga wrote:
АццкоМото wrote: Более того, на Васю, который теоретически будет работать с моим кодом, когда я уволюсь - мне насрать. Вот честно так.
Я правильно подозревал, значит. Именно в защиту от таких "засранцев" код ревью и придумали.
сейчас и человека, способного код ревью провести не найти днем с огнем, вечером разогнем.
поэтому когда находят баг в моем коде, правят компилятор

ЗЫ. насколько я понимаю, не фон скрин. ибо несколько этапов. один хрен, я круче, чем неумехи из ФБ, поэтому - не по пути
Мат на форуме запрещен, блдж!
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Философия разработки на примере синглтона

Post by Мальчик-Одуванчик »

Я как раз сталкивался с ситуацией именно с конструктором, который забыли сделать приватным
Этот код писал и сопровождал один человек лет несколько и все работало.
А потом этот код передали как основу для похожего проекта другому программеру
Ну и началось...
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Философия разработки на примере синглтона

Post by АццкоМото »

Мальчик-Одуванчик wrote:У меня это зависит от продуманности проекта.
Если он изначально хорошо продуман, то и пишется как-то обстоятельней что-ли
Даже юнит-тесты сами-собой присобачиваются чуть ли не на этапе проектирования.
А если шаляй-валяй кровь-из-носа к понедельнику новая фича в стиле оджайл-прогиб то и думать не хочется,
да и код соответстующий в стиле: "Клиент требует залипуху - он её получит"
А самые вылизанные оказываются домашние проекты, которые и показывать никому в планах нет.
Согласен, есть зависимость и от психологического настроя.
А домашний проект, который и показывать планов нет - немного за рамками вопроса. Ибо не стоит выбор - что эффективнее, сделать лишнее движение попой или забить. Это же домашние зверушки. Я бы вот и кота на пельмени забил давно, ан нет, кормлю и глажу. логика тут второстепенна
Мат на форуме запрещен, блдж!
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Философия разработки на примере синглтона

Post by АццкоМото »

Мальчик-Одуванчик wrote:Я как раз сталкивался с ситуацией именно с конструктором, который забыли сделать приватным
Этот код писал и сопровождал один человек лет несколько и все работало.
А потом этот код передали как основу для похожего проекта другому программеру
Ну и началось...
Т.е. все верно же? Человек пил коктейли на Гавайах, а страдалец на него матерился в офисных застенках. Меня такой вариант устраивает. Гомо гомини люпус эст.
Мат на форуме запрещен, блдж!
Berlaga
Уже с Приветом
Posts: 1008
Joined: 24 Mar 2010 21:14
Location: SFBA

Re: Философия разработки на примере синглтона

Post by Berlaga »

АццкоМото wrote:один хрен, я круче, чем неумехи из ФБ, поэтому - не по пути
Ну конечно же, кто бы сомневался.

Я вас даже еще сильнее обрадую. Если чисто количественно сравнивать число крашей, то с очень высокой вероятностью ваш апп будет выглядетт сильно лучше любого крупного проекта, такого как ядро Линукса, SQL Server, Google Chrome и т.д. Т.е., вы куда круче тех лошков, которые их писали. Браво! :good:
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Философия разработки на примере синглтона

Post by Мальчик-Одуванчик »

АццкоМото wrote:
Мальчик-Одуванчик wrote:Я как раз сталкивался с ситуацией именно с конструктором, который забыли сделать приватным
Этот код писал и сопровождал один человек лет несколько и все работало.
А потом этот код передали как основу для похожего проекта другому программеру
Ну и началось...
Т.е. все верно же? Человек пил коктейли на Гавайах, а страдалец на него матерился в офисных застенках. Меня такой вариант устраивает. Гомо гомини люпус эст.
Не ну стопудово неплохо быть крутым перцем, а остальные пусть потом разгребают гениальное говнище.
Классический оджайл - "слепила из того что было" плюс какая-никакая "джоб секюрити"
User avatar
Prosche
Уже с Приветом
Posts: 7956
Joined: 08 Nov 2004 12:24
Location: GA

Re: Философия разработки на примере синглтона

Post by Prosche »

Имхо, копиконструктор я б полюбому прятал, пример С++:

Code: Select all

class Singleton
{
public:
    static Singleton& getInstance()
    {
        static Singleton instance;
        return instance;
    }
    Singleton()
    {
        std::cout << "instance created" << std::endl;
    }
    ~Singleton()
    {
        std::cout << "instance destroyed" << std::endl;
    }
};
далее мы можем использовать его например так:

Code: Select all

Singleton& i = Singleton::getInstance();
и будет все красиво, лог:
instance created
instance destroyed

а можем просто сделать опечатку:

Code: Select all

Singleton i = Singleton::getInstance();
пропустили амперсанд, с кем не бывает, но:
instance created
instance destroyed
instance destroyed
упс. получили второй экземляр, что может привести к весьма неприятным и трудноуловимым багам. Был бы копиконструктор спрятан, компилятор бы нас спас.
А если не давать создавать копии, то можно запретить и инстанциировать обьекты самостоятельно, до кучи, что уж там :)
Last edited by Prosche on 20 Oct 2014 21:55, edited 1 time in total.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15475
Joined: 27 Sep 2007 22:53

Re: Философия разработки на примере синглтона

Post by Мальчик-Одуванчик »

Ну тогда бы до кучи и конструктор копирования с оператором присваивания нужно прятать.
Иначе этот "упс" все равно случится
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Философия разработки на примере синглтона

Post by АццкоМото »

Berlaga wrote:
АццкоМото wrote:один хрен, я круче, чем неумехи из ФБ, поэтому - не по пути
Ну конечно же, кто бы сомневался.
Засуньте свой сарказм туда, где ему и полагается быть
Berlaga wrote:Я вас даже еще сильнее обрадую. Если чисто количественно сравнивать число крашей, то с очень высокой вероятностью ваш апп будет выглядетт сильно лучше любого крупного проекта, такого как ядро Линукса, SQL Server, Google Chrome и т.д. Т.е., вы куда круче тех лошков, которые их писали. Браво! :good:
Я сравнивал количество крашей у одного юзера с количеством крашей у тысяч. Поэтому пока в лошаках только вы
Мат на форуме запрещен, блдж!
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Философия разработки на примере синглтона

Post by АццкоМото »

Мальчик-Одуванчик wrote:
АццкоМото wrote:
Мальчик-Одуванчик wrote:Я как раз сталкивался с ситуацией именно с конструктором, который забыли сделать приватным
Этот код писал и сопровождал один человек лет несколько и все работало.
А потом этот код передали как основу для похожего проекта другому программеру
Ну и началось...
Т.е. все верно же? Человек пил коктейли на Гавайах, а страдалец на него матерился в офисных застенках. Меня такой вариант устраивает. Гомо гомини люпус эст.
Не ну стопудово неплохо быть крутым перцем, а остальные пусть потом разгребают гениальное говнище.
Классический оджайл - "слепила из того что было" плюс какая-никакая "джоб секюрити"
Ну типа да, так и есть. Что такого-то?
По тяжелым и зрелым процессам я работать тоже люблю и умею. Но если менеджмент не захотел правильного процесса, то с каких баранок я должен предпринимать какие-то дополнительные усилия ради незнакомых мне людей, которым "разгребать говнище"? Не-не, люпус эст
Мат на форуме запрещен, блдж!
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Философия разработки на примере синглтона

Post by Сабина »

Berlaga wrote:Если чисто количественно сравнивать число крашей, то с очень высокой вероятностью ваш апп будет выглядетт сильно лучше любого крупного проекта, такого как ядро Линукса, SQL Server, Google Chrome и т.д. Т.е., вы куда круче тех лошков, которые их писали. Браво! :good:
:lol: :lol: :lol: :lol: :lol:
https://www.youtube.com/watch?v=wOwblaKmyVw
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Философия разработки на примере синглтона

Post by АццкоМото »

Prosche wrote: упс. получили второй экземляр, что может привести к весьма неприятным и трудноуловимым багам. Был бы копиконструктор спрятан, компилятор бы нас спас.
А если не давать создавать копии, то можно запретить и инстанциировать обьекты самостоятельно, до кучи, что уж там :)
Вот видите, какая прелесть. Про private: void operator=(Singleton const&); вы все равно забыли. И спрятанный в приват конструктор решил бы полпроблемы. И, в целом, если я бы написал то же самое, но с указателем (static Singleton *getInstance()) - код получился бы более надежным. Говнокод, заметим.
Т.е. нужно либо париться и делать 100% аккуратно, либо не париться вообще. В промежутках живут монстры.
Мат на форуме запрещен, блдж!
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: Философия разработки на примере синглтона

Post by Сабина »

Во как надо получать доступ к инстансу
http://java.dzone.com/articles/understa ... miscunsafe

Code: Select all

@Test
public void testObjectCreation() throws Exception {
   ClassWithExpensiveConstructor instance = (ClassWithExpensiveConstructor)
   unsafe.allocateInstance(ClassWithExpensiveConstructor.class);
   assertEquals(0, instance.getValue());
}
шютка 8)
https://www.youtube.com/watch?v=wOwblaKmyVw

Return to “Работа и Карьера в IT”