Философия разработки на примере синглтона
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Философия разработки на примере синглтона
В соседнем топике навели на мысль, которая уже давно полуоформившаяся бьется в сознании. Синглтон - это просто пример для иллюстрации.
Вот давайте представим, что мы разрабатываем какой-то софт, и у нас есть нечто, что логично бы сделать синглтоном. Ну и мы привычными движениями пальцефф фигачим класс, а в нем - метод getInstance(), который смотрит, есть ли уже существующий инстанс и возвращает его, если есть, или создает и возвращает. Делов на три копейки.
Но ничего ли мы не забыли? Ах, да! Всенепременно нужно сделать конструктор приватным, чтобы никто не создал объект напрямую. Ну, тут от языка зависит, но во многих - именно так.
И вот тут возникает интересная идиосинкразия. Я уверен, что если проект двигаю только я - это совершенно лишнее. Я-то в курсе и не буду делать new вместо getInstance(). А даже несколько символов типа private Singleton() { /* Cant touch this */ } - это уже лишняя работа и даже тут можно умудриться сделать баг. Но если не дай Г-ди показать потом свой "ленивый" код нии..цца спецу, смешает ведь с дерьмом. И, действительно, для публичного кода приватный конструктор необходим
Если мыслить шире, то подобные решения - делать "как положено" или забить - мы делаем по 100500 раз в день. И я настаиваю, что для проектов, делающихся в одно рыло (или в 2-3 рыла, если все хорошо с взаимопониманием), то забить - правильное решение. Но, подозреваю, 146% народа со мной несогласны.
Ваше мнение, товарищь Маузер?
Вот давайте представим, что мы разрабатываем какой-то софт, и у нас есть нечто, что логично бы сделать синглтоном. Ну и мы привычными движениями пальцефф фигачим класс, а в нем - метод getInstance(), который смотрит, есть ли уже существующий инстанс и возвращает его, если есть, или создает и возвращает. Делов на три копейки.
Но ничего ли мы не забыли? Ах, да! Всенепременно нужно сделать конструктор приватным, чтобы никто не создал объект напрямую. Ну, тут от языка зависит, но во многих - именно так.
И вот тут возникает интересная идиосинкразия. Я уверен, что если проект двигаю только я - это совершенно лишнее. Я-то в курсе и не буду делать new вместо getInstance(). А даже несколько символов типа private Singleton() { /* Cant touch this */ } - это уже лишняя работа и даже тут можно умудриться сделать баг. Но если не дай Г-ди показать потом свой "ленивый" код нии..цца спецу, смешает ведь с дерьмом. И, действительно, для публичного кода приватный конструктор необходим
Если мыслить шире, то подобные решения - делать "как положено" или забить - мы делаем по 100500 раз в день. И я настаиваю, что для проектов, делающихся в одно рыло (или в 2-3 рыла, если все хорошо с взаимопониманием), то забить - правильное решение. Но, подозреваю, 146% народа со мной несогласны.
Ваше мнение, товарищь Маузер?
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 158
- Joined: 29 Aug 2013 11:58
Re: Философия разработки на примере синглтона
Пример с синглтоном не очень хороший, т.к. уже давно считается правильным (мы же про Java? разве есть еще что-то ) делать его через enum. А это куда проще и отмазка про "так быстрее было" уже не работаетАццкоМото wrote:Ваше мнение, товарищь Маузер?
Если есть хоть небольшое желание вывести приложение "в массы" - я бы таки заморачивался "как правильно".
Вдруг какие помощники найдутся, которые не зная "блистательной архитектуры под себя" все завалят
Время ресурс ограниченный, не переписывать же резко с нуля если "стрельнул внезапно" проект.
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Философия разработки на примере синглтона
Джава не джава - фиг его знает. В понедельник напрягать моск думками, как оно в других йызыках - это выше моей лени_newcomer_ wrote:Пример с синглтоном не очень хороший, т.к. уже давно считается правильным (мы же про Java? разве есть еще что-то ) делать его через enum. А это куда проще и отмазка про "так быстрее было" уже не работаетАццкоМото wrote:Ваше мнение, товарищь Маузер?
А вот "правильнее через enum" - отличный пример кододрочерства. Мне вот тупо так непривычно и я вертел на своем малахиовом стержне все эти "считается"
Безусловно, если маячит публичная контрибуция в проект - надо делать правильно. А не маячит - ну чего напрягаться-то?_newcomer_ wrote:Если есть хоть небольшое желание вывести приложение "в массы" - я бы таки заморачивался "как правильно".
Вдруг какие помощники найдутся, которые не зная "блистательной архитектуры под себя" все завалят
Время ресурс ограниченный, не переписывать же резко с нуля если "стрельнул внезапно" проект.
Опять же, если проект "внезапно стрельнул", то инвесторы дадут свои миллионы, чтобы студент подшаманил, чтобы "как учили". Снова самому попой шевелить не надо
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 418
- Joined: 11 Mar 2014 03:30
- Location: Spb->SFBA
Re: Философия разработки на примере синглтона
Нужно в себе выработать в себе привычки типовые, тривиальные вещи писать аккуратно, однотипно, понятно и пр. Это как гигиена. К ней привыкаешь и не задумываясь соблюдаешьАццкоМото wrote: Если мыслить шире, то подобные решения - делать "как положено" или забить - мы делаем по 100500 раз в день.
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Философия разработки на примере синглтона
Я уверен, что вы считаете свою гигиену безупречной. Но найдется человек, который скажет, что вы грязнуля. Кто-то залупку моет 5 раз в день, кто-то подмышки и лобок бреет каждую неделю. Коля Фоменко, например, не может целый день ходить в одних джинсах. Я, например, много лет не носил трусы. Все относительноturic wrote:Нужно в себе выработать в себе привычки типовые, тривиальные вещи писать аккуратно, однотипно, понятно и пр. Это как гигиена. К ней привыкаешь и не задумываясь соблюдаешьАццкоМото wrote: Если мыслить шире, то подобные решения - делать "как положено" или забить - мы делаем по 100500 раз в день.
Поэтому я бы не стал безапелляционно выдавать фразы типа "нужно в себе выработать...". Или как минимум будьте готовы ответить - кому нужно и зачем
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 1008
- Joined: 24 Mar 2010 21:14
- Location: SFBA
Re: Философия разработки на примере синглтона
Для проектов типа "херак! херак! в гуглплей!!!" можно и не заморачиваться, среднее время их жизни короче, чем прелюдии к сексу у мухи-дрозофилы.
Но если творение имеет шанс прожить хотя бы год, то даже для команды из одного погромиста неоплохо бы уметь доносить информацию из прошлого. Человеку свойственно забывать детали и со временем даже не вася из соседнего кубика, а сам аффтар, ничтоже сумляще, создаст новый инстанс этого "синглтона" и будет долго чесать репу на тему #чозахерня и #каковабуянеработает.
Но если творение имеет шанс прожить хотя бы год, то даже для команды из одного погромиста неоплохо бы уметь доносить информацию из прошлого. Человеку свойственно забывать детали и со временем даже не вася из соседнего кубика, а сам аффтар, ничтоже сумляще, создаст новый инстанс этого "синглтона" и будет долго чесать репу на тему #чозахерня и #каковабуянеработает.
-
- Уже с Приветом
- Posts: 158
- Joined: 29 Aug 2013 11:58
Re: Философия разработки на примере синглтона
Опять же - если в вашей ситуации "абы какой синглтон" работает как надо, то может и надуманная это проблема. И не нужен он там был вовсе именно как синглтон со всякими извращениями.АццкоМото wrote:А вот "правильнее через enum" - отличный пример кододрочерства. Мне вот тупо так непривычно и я вертел на своем малахиовом стержне все эти "считается"
Да и с другими патернами такая же фигня - периодически кто-то переоценивает или притягивает за уши их. Типа слово понравилось - надо впендюрить в код
"Как правильно" - это скорее необходимость, когда по другому никак/не работает. В общем по ситуации.
Согласен, есть такой вариант. Но зачастую "миллионов еще не дали". а "студент уже нужен".АццкоМото wrote:Опять же, если проект "внезапно стрельнул", то инвесторы дадут свои миллионы, чтобы студент подшаманил, чтобы "как учили". Снова самому попой шевелить не надо
Вот тут и может облом мимо "миллионов" случится
А вообще согласен с мнением выше, что если что-то привык делать "на работе" правильно (ну приходится себя заставлять, да, а то сервера попадывать будут, будь они неладны ), то потом уже сложнее вспомнить "как надо неправильно", чтобы оригинальностью блеснуть.
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Философия разработки на примере синглтона
Это популярное заблуждение. Жизненный цикл моего приложения - уже около 5 лет и умирать не собирается. А им пользуются _только_ платящие клиенты, причем многие платят сотни тысяч в год. При этом я руководствуюсь именно принципом "херак! херак! в гуглплей!!!". Да, ровно один раз я облажался по полной, когда зарелизил код вида isSomeStaffEnabled() {return false; //TODO: fix it later }. Ок, mea culpa, и про старуху бывает порнуха. В целом-то все работает получше чем у многихBerlaga wrote:Для проектов типа "херак! херак! в гуглплей!!!" можно и не заморачиваться, среднее время их жизни короче, чем прелюдии к сексу у мухи-дрозофилы.
Одновременно я смотрю на фейсбучный апп, которым пользуются сотни миллионов человек и разрабатывают его десятки если не сотни рыл в Менло Парке, и у каждого зряплата в три моих, за хреновый синглтон их карают анально, а чтобы не сбежали им бесплатно морозят яйцеклетки. Ок. Но апп - говно. Если я кликаю на ссылку со стены и потом нажимаю back, я в 50% случаев попадаю не на тот пост, с которого уходил, а в 10% - вообще на закладку с апдейтами. Крешей лично я ФБ аппа видел больше, чем случалось крэшей с моим аппом со всеми клиентами вместе взятыми. Наверное, дело не в бобине.
И именно поэтому когда ФБ внезапно звонит мне и говорит, что интервью я прошел оказывается неплохо и айда к нам - я отвечаю, что у вас кривожопые мудаки и я согласен ими только руководить. Понятно, что они съезжают, но и мне приятно
Да, все так и есть, но это сильно переоцененно. Все эти уотзефаки случаются постоянно и даже с прекрасным кодом. Это часть жизни и не более того. Когд должен писаться так, чтобы про него забыть. Работает - и здорово. Случилась мелкая проблема типа "а я уже забыл" - вспоминать и фиксать. Крупная - переписать нах. Не зря же Гугл переписывает постоянно свой код - напейсать сразу много и хорошо все равно невозможноBerlaga wrote:Но если творение имеет шанс прожить хотя бы год, то даже для команды из одного погромиста неоплохо бы уметь доносить информацию из прошлого. Человеку свойственно забывать детали и со временем даже не вася из соседнего кубика, а сам аффтар, ничтоже сумляще, создаст новый инстанс этого "синглтона" и будет долго чесать репу на тему #чозахерня и #каковабуянеработает.
Более того, на Васю, который теоретически будет работать с моим кодом, когда я уволюсь - мне насрать. Вот честно так.
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Философия разработки на примере синглтона
Без любого паттерна можно обойтись. Вся их суть - механически скопировать чей-то опыт и размышления вместо самостоятельных раздумий и переизобретения колеса. Тем не менее, я считаю, что копировать полностью не всегда хорошо_newcomer_ wrote: Опять же - если в вашей ситуации "абы какой синглтон" работает как надо, то может и надуманная это проблема. И не нужен он там был вовсе именно как синглтон со всякими извращениями.
Да и с другими патернами такая же фигня - периодически кто-то переоценивает или притягивает за уши их. Типа слово понравилось - надо впендюрить в код
да ладно. никто никогда не откажет в финансировании потому что приватный конструктор не определен. или еще какие-то очевидно "неправильные" вещи сделаны в коде_newcomer_ wrote:Согласен, есть такой вариант. Но зачастую "миллионов еще не дали". а "студент уже нужен".
Вот тут и может облом мимо "миллионов" случится
вообще, суть в том, что тяп-ляп код активно живет меньше, чем нужно времени для полноценного проявления эффектов гниения
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 158
- Joined: 29 Aug 2013 11:58
Re: Философия разработки на примере синглтона
Согласен. Просто если заранее знаешь "4 способа реализовать синглтон" на требуемом языке - проще сообразить, какой именно менее лениво и затратно "реализовать не полностью правильно"АццкоМото wrote:Без любого паттерна можно обойтись. ... я считаю, что копировать полностью не всегда хорошо
Не не, я про ситуацию, когда "через 2-3-4 недели могут дать денег, надо успеть докрутить N фич".АццкоМото wrote:да ладно. никто никогда не откажет в финансировании потому что приватный конструктор не определен. или еще какие-то очевидно "неправильные" вещи сделаны в коде_newcomer_ wrote:Согласен, есть такой вариант. Но зачастую "миллионов еще не дали". а "студент уже нужен".
Вот тут и может облом мимо "миллионов" случится
И вот тут может быть необдуманное решение "пригласить студента" на уникальный проект
Хотя старшие товарищи учат, что в такой ситуации наоборот надо студентов увольнять и временно записывать в чистые кодеры лидов
Тоже такое часто встречал. Но "писать правильно" - это типа страсти к оптимизации (хотя и с лучшими последствиями) - нельзя перебарщивать, но и совсем не думать опасно.... - надо в меруАццкоМото wrote:вообще, суть в том, что тяп-ляп код активно живет меньше, чем нужно времени для полноценного проявления эффектов гниения
-
- Уже с Приветом
- Posts: 1008
- Joined: 24 Mar 2010 21:14
- Location: SFBA
Re: Философия разработки на примере синглтона
Дело, разумеется, в другом. В сложности. Когда (и если) дойдете до миллионов пользователей - о, сколько нам открытий чудных...АццкоМото wrote: Крешей лично я ФБ аппа видел больше, чем случалось крэшей с моим аппом со всеми клиентами вместе взятыми. Наверное, дело не в бобине.
Что-то мне подсказывает, что под "интервью" тут понимается обычный фон-скриннинг с проверкой на "не дебильность", но в принципе - поздравляю! даже его не все проходят.АццкоМото wrote: И именно поэтому когда ФБ внезапно звонит мне и говорит, что интервью я прошел оказывается неплохо и айда к нам - я отвечаю, что у вас кривожопые мудаки и я согласен ими только руководить. Понятно, что они съезжают, но и мне приятно
Случаются, но намного реже.АццкоМото wrote: Да, все так и есть, но это сильно переоцененно. Все эти уотзефаки случаются постоянно и даже с прекрасным кодом.
Я правильно подозревал, значит. Именно в защиту от таких "засранцев" код ревью и придумали.АццкоМото wrote: Более того, на Васю, который теоретически будет работать с моим кодом, когда я уволюсь - мне насрать. Вот честно так.
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Философия разработки на примере синглтона
У меня это зависит от продуманности проекта.
Если он изначально хорошо продуман, то и пишется как-то обстоятельней что-ли
Даже юнит-тесты сами-собой присобачиваются чуть ли не на этапе проектирования.
А если шаляй-валяй кровь-из-носа к понедельнику новая фича в стиле оджайл-прогиб то и думать не хочется,
да и код соответстующий в стиле: "Клиент требует залипуху - он её получит"
А самые вылизанные оказываются домашние проекты, которые и показывать никому в планах нет.
Если он изначально хорошо продуман, то и пишется как-то обстоятельней что-ли
Даже юнит-тесты сами-собой присобачиваются чуть ли не на этапе проектирования.
А если шаляй-валяй кровь-из-носа к понедельнику новая фича в стиле оджайл-прогиб то и думать не хочется,
да и код соответстующий в стиле: "Клиент требует залипуху - он её получит"
А самые вылизанные оказываются домашние проекты, которые и показывать никому в планах нет.
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Философия разработки на примере синглтона
Ой, куда бы деться. У вас сверхширокая клавиатура, что подходит под растопыренные пальцы?Berlaga wrote:Дело, разумеется, в другом. В сложности. Когда (и если) дойдете до миллионов пользователей - о, сколько нам открытий чудных...АццкоМото wrote: Крешей лично я ФБ аппа видел больше, чем случалось крэшей с моим аппом со всеми клиентами вместе взятыми. Наверное, дело не в бобине.
Во-первых, у мобильной аппы всегда пользователь ровно один.
Во-вторых, не так давно пытался подсчитать, сколько девайсов с моим кодом было продано. Выходит под миллиард. Мне этого достаточно, чтобы высокомерные россказни про сложность "миллионов" читать с издевательской улыбкой
сейчас и человека, способного код ревью провести не найти днем с огнем, вечером разогнем.Berlaga wrote:Я правильно подозревал, значит. Именно в защиту от таких "засранцев" код ревью и придумали.АццкоМото wrote: Более того, на Васю, который теоретически будет работать с моим кодом, когда я уволюсь - мне насрать. Вот честно так.
поэтому когда находят баг в моем коде, правят компилятор
ЗЫ. насколько я понимаю, не фон скрин. ибо несколько этапов. один хрен, я круче, чем неумехи из ФБ, поэтому - не по пути
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Философия разработки на примере синглтона
Я как раз сталкивался с ситуацией именно с конструктором, который забыли сделать приватным
Этот код писал и сопровождал один человек лет несколько и все работало.
А потом этот код передали как основу для похожего проекта другому программеру
Ну и началось...
Этот код писал и сопровождал один человек лет несколько и все работало.
А потом этот код передали как основу для похожего проекта другому программеру
Ну и началось...
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Философия разработки на примере синглтона
Согласен, есть зависимость и от психологического настроя.Мальчик-Одуванчик wrote:У меня это зависит от продуманности проекта.
Если он изначально хорошо продуман, то и пишется как-то обстоятельней что-ли
Даже юнит-тесты сами-собой присобачиваются чуть ли не на этапе проектирования.
А если шаляй-валяй кровь-из-носа к понедельнику новая фича в стиле оджайл-прогиб то и думать не хочется,
да и код соответстующий в стиле: "Клиент требует залипуху - он её получит"
А самые вылизанные оказываются домашние проекты, которые и показывать никому в планах нет.
А домашний проект, который и показывать планов нет - немного за рамками вопроса. Ибо не стоит выбор - что эффективнее, сделать лишнее движение попой или забить. Это же домашние зверушки. Я бы вот и кота на пельмени забил давно, ан нет, кормлю и глажу. логика тут второстепенна
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Философия разработки на примере синглтона
Т.е. все верно же? Человек пил коктейли на Гавайах, а страдалец на него матерился в офисных застенках. Меня такой вариант устраивает. Гомо гомини люпус эст.Мальчик-Одуванчик wrote:Я как раз сталкивался с ситуацией именно с конструктором, который забыли сделать приватным
Этот код писал и сопровождал один человек лет несколько и все работало.
А потом этот код передали как основу для похожего проекта другому программеру
Ну и началось...
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 1008
- Joined: 24 Mar 2010 21:14
- Location: SFBA
Re: Философия разработки на примере синглтона
Ну конечно же, кто бы сомневался.АццкоМото wrote:один хрен, я круче, чем неумехи из ФБ, поэтому - не по пути
Я вас даже еще сильнее обрадую. Если чисто количественно сравнивать число крашей, то с очень высокой вероятностью ваш апп будет выглядетт сильно лучше любого крупного проекта, такого как ядро Линукса, SQL Server, Google Chrome и т.д. Т.е., вы куда круче тех лошков, которые их писали. Браво!
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Философия разработки на примере синглтона
Не ну стопудово неплохо быть крутым перцем, а остальные пусть потом разгребают гениальное говнище.АццкоМото wrote:Т.е. все верно же? Человек пил коктейли на Гавайах, а страдалец на него матерился в офисных застенках. Меня такой вариант устраивает. Гомо гомини люпус эст.Мальчик-Одуванчик wrote:Я как раз сталкивался с ситуацией именно с конструктором, который забыли сделать приватным
Этот код писал и сопровождал один человек лет несколько и все работало.
А потом этот код передали как основу для похожего проекта другому программеру
Ну и началось...
Классический оджайл - "слепила из того что было" плюс какая-никакая "джоб секюрити"
-
- Уже с Приветом
- Posts: 7956
- Joined: 08 Nov 2004 12:24
- Location: GA
Re: Философия разработки на примере синглтона
Имхо, копиконструктор я б полюбому прятал, пример С++:
далее мы можем использовать его например так:
и будет все красиво, лог:
instance created
instance destroyed
а можем просто сделать опечатку:
пропустили амперсанд, с кем не бывает, но:
instance created
instance destroyed
instance destroyed
упс. получили второй экземляр, что может привести к весьма неприятным и трудноуловимым багам. Был бы копиконструктор спрятан, компилятор бы нас спас.
А если не давать создавать копии, то можно запретить и инстанциировать обьекты самостоятельно, до кучи, что уж там
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.
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Философия разработки на примере синглтона
Ну тогда бы до кучи и конструктор копирования с оператором присваивания нужно прятать.
Иначе этот "упс" все равно случится
Иначе этот "упс" все равно случится
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Философия разработки на примере синглтона
Засуньте свой сарказм туда, где ему и полагается бытьBerlaga wrote:Ну конечно же, кто бы сомневался.АццкоМото wrote:один хрен, я круче, чем неумехи из ФБ, поэтому - не по пути
Я сравнивал количество крашей у одного юзера с количеством крашей у тысяч. Поэтому пока в лошаках только выBerlaga wrote:Я вас даже еще сильнее обрадую. Если чисто количественно сравнивать число крашей, то с очень высокой вероятностью ваш апп будет выглядетт сильно лучше любого крупного проекта, такого как ядро Линукса, SQL Server, Google Chrome и т.д. Т.е., вы куда круче тех лошков, которые их писали. Браво!
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Философия разработки на примере синглтона
Ну типа да, так и есть. Что такого-то?Мальчик-Одуванчик wrote:Не ну стопудово неплохо быть крутым перцем, а остальные пусть потом разгребают гениальное говнище.АццкоМото wrote:Т.е. все верно же? Человек пил коктейли на Гавайах, а страдалец на него матерился в офисных застенках. Меня такой вариант устраивает. Гомо гомини люпус эст.Мальчик-Одуванчик wrote:Я как раз сталкивался с ситуацией именно с конструктором, который забыли сделать приватным
Этот код писал и сопровождал один человек лет несколько и все работало.
А потом этот код передали как основу для похожего проекта другому программеру
Ну и началось...
Классический оджайл - "слепила из того что было" плюс какая-никакая "джоб секюрити"
По тяжелым и зрелым процессам я работать тоже люблю и умею. Но если менеджмент не захотел правильного процесса, то с каких баранок я должен предпринимать какие-то дополнительные усилия ради незнакомых мне людей, которым "разгребать говнище"? Не-не, люпус эст
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Философия разработки на примере синглтона
Berlaga wrote:Если чисто количественно сравнивать число крашей, то с очень высокой вероятностью ваш апп будет выглядетт сильно лучше любого крупного проекта, такого как ядро Линукса, SQL Server, Google Chrome и т.д. Т.е., вы куда круче тех лошков, которые их писали. Браво!
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Философия разработки на примере синглтона
Вот видите, какая прелесть. Про private: void operator=(Singleton const&); вы все равно забыли. И спрятанный в приват конструктор решил бы полпроблемы. И, в целом, если я бы написал то же самое, но с указателем (static Singleton *getInstance()) - код получился бы более надежным. Говнокод, заметим.Prosche wrote: упс. получили второй экземляр, что может привести к весьма неприятным и трудноуловимым багам. Был бы копиконструктор спрятан, компилятор бы нас спас.
А если не давать создавать копии, то можно запретить и инстанциировать обьекты самостоятельно, до кучи, что уж там
Т.е. нужно либо париться и делать 100% аккуратно, либо не париться вообще. В промежутках живут монстры.
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Философия разработки на примере синглтона
Во как надо получать доступ к инстансу
http://java.dzone.com/articles/understa ... miscunsafe
шютка
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());
}
https://www.youtube.com/watch?v=wOwblaKmyVw