Название: Совет по дизайну. Две модели для данных Отправлено: UVV от Сентябрь 20, 2014, 11:25 Привет.
Есть данные, над которыми 2 модели для разного отображения. У меня закрались сомнения, что данный дизайн правильный, поскольку обновление данных в одной модели, нужно как-то обновить вторую модель (сейчас делается просто reset). Чтобы вы посоветовали? Как принято делать в этом случае? Спасибо. Название: Re: Совет по дизайну. Две модели для данных Отправлено: kambala от Сентябрь 20, 2014, 15:44 а что мешает использовать одну модель? побольше бы подробностей :)
Название: Re: Совет по дизайну. Две модели для данных Отправлено: UVV от Сентябрь 20, 2014, 16:39 а что мешает использовать одну модель? побольше бы подробностей :) Так данные отображаются по-разному. rowCount() и data() по-разному реализованы и редактирование по-другому выглядит.Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Сентябрь 20, 2014, 16:42 Отображение суть роль View, а никак не модели.
Если у вас данные одинаковые, но разное отображение - вам надо менять View а не Model. А так да - мало данных, нет кода, советовать нет смысла. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Igors от Сентябрь 20, 2014, 17:24 2 экземпляра данных - принципиально неверно, хоть с MVC хоть как
Название: Re: Совет по дизайну. Две модели для данных Отправлено: UVV от Сентябрь 21, 2014, 22:30 2 экземпляра данных - принципиально неверно, хоть с MVC хоть как Экземпляр данных один, указатель на данные в модели. Просто когда данные меняются из одной модели, другую нужно как-то уведомить, что данные изменились.Название: Re: Совет по дизайну. Две модели для данных Отправлено: UVV от Сентябрь 21, 2014, 22:34 Отображение суть роль View, а никак не модели. Тем не менее информацию о столбцах, строках и т.п. выдаёт модель, а не view.Если у вас данные одинаковые, но разное отображение - вам надо менять View а не Model. А так да - мало данных, нет кода, советовать нет смысла. Есть QByteArray. В одной модели он отображается и редактируется как hex, в другой, как bin. Сам массив данных хранится ессно не в модели, а в каждую из моделей передаётся указатель на один и тот же массив.Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Сентябрь 22, 2014, 10:07 У вас проблема с архитектурой.
Модель должна отдавать QByteArray. В любом из случаев. Делегат должен меняться. И именно в нём обрабатывать данные как вам нужно. В результате получается 1 модель, 1 View, 2 делегата. Название: Re: Совет по дизайну. Две модели для данных Отправлено: UVV от Сентябрь 22, 2014, 11:44 У вас проблема с архитектурой. Поэтому и тред =)Модель должна отдавать QByteArray. В любом из случаев. Что значит модель должна отдавать? из data() возвращать?Делегат должен меняться. И именно в нём обрабатывать данные как вам нужно. В результате получается 1 модель, 1 View, 2 делегата. Т.е. заголовки/размер столбцов, отображение данных - это не из модели возвращать? Я думал тут 2 View надо... Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Сентябрь 22, 2014, 12:02 Смотри...
Model хранит данные. View запрашивает данные. Делегат отрисовывает что-то на основе данных. Вот так работает система. Название: Re: Совет по дизайну. Две модели для данных Отправлено: UVV от Сентябрь 22, 2014, 13:58 А как же rowCount() and columnCount()? Модель же их отдаёт. Для hex и bin они разные у меня. Что делать в этом случае?
Название: Re: Совет по дизайну. Две модели для данных Отправлено: vizir.vs от Сентябрь 22, 2014, 14:13 Как модель может отдавать разные данные, если она одна? Модель должна отдавать одинаковые данные, а вьювер будет отображать эти данные как тебе надо. Интерпритация данных будет на стороне вьювера
Название: Re: Совет по дизайну. Две модели для данных Отправлено: UVV от Сентябрь 22, 2014, 14:29 Как модель может отдавать разные данные, если она одна? Модель должна отдавать одинаковые данные, а вьювер будет отображать эти данные как тебе надо. Интерпритация данных будет на стороне вьювера Я нигде не говорил, что данные разные. К примеру, в случае hex у меня будет 16 столбцов, а в случае bin - только 8.Название: Re: Совет по дизайну. Две модели для данных Отправлено: vizir.vs от Сентябрь 22, 2014, 14:39 Как модель может отдавать разные данные, если она одна? Модель должна отдавать одинаковые данные, а вьювер будет отображать эти данные как тебе надо. Интерпритация данных будет на стороне вьювера Я нигде не говорил, что данные разные. К примеру, в случае hex у меня будет 16 столбцов, а в случае bin - только 8.Модель ни чего не знает о количестве столбцов, будет ли это таблица, или график, или еще что-нибудь. У нее есть данные, а вьювер эти данные уже отображает. В твоем случае, например, у тебя есть массив из 32 чисел. Хекс должен этот массив интерпретировать как таблица из 16 столбоцов, а бин - как таблица из 8 столбцов. Модель на таблицу ни как не влияет. Может ты захочешь сделать еще один вьювер хекс-бин, который будет отображать в виде графика. Название: Re: Совет по дизайну. Две модели для данных Отправлено: UVV от Сентябрь 22, 2014, 14:50 Модель ни чего не знает о количестве столбцов, будет ли это таблица, или график, или еще что-нибудь. У нее есть данные, а вьювер эти данные уже отображает. В твоем случае, например, у тебя есть массив из 32 чисел. Хекс должен этот массив интерпретировать как таблица из 16 столбоцов, а бин - как таблица из 8 столбцов. Модель на таблицу ни как не влияет. Может ты захочешь сделать еще один вьювер хекс-бин, который будет отображать в виде графика. Ну так вот этот-то метод в модели http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#columnCount , а не во view. Можно немного поподробнее, пжлста, как мне объединить эти 2 модели в одну. Название: Re: Совет по дизайну. Две модели для данных Отправлено: vizir.vs от Сентябрь 22, 2014, 15:14 Модель ни чего не знает о количестве столбцов, будет ли это таблица, или график, или еще что-нибудь. У нее есть данные, а вьювер эти данные уже отображает. В твоем случае, например, у тебя есть массив из 32 чисел. Хекс должен этот массив интерпретировать как таблица из 16 столбоцов, а бин - как таблица из 8 столбцов. Модель на таблицу ни как не влияет. Может ты захочешь сделать еще один вьювер хекс-бин, который будет отображать в виде графика. Ну так вот этот-то метод в модели http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#columnCount , а не во view. Можно немного поподробнее, пжлста, как мне объединить эти 2 модели в одну. Храни в моделях указатель на данные. Название: Re: Совет по дизайну. Две модели для данных Отправлено: UVV от Сентябрь 22, 2014, 15:19 Ну так вот этот-то метод в модели http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#columnCount , а не во view. Можно немного поподробнее, пжлста, как мне объединить эти 2 модели в одну. Храни в моделях указатель на данные. Спасибо, кэп. Я именно так и делаю, о чём написал уже выше по треду. Вопрос был в том, что если данные меняются в одной модели, как уведомить об этом другую модель? Если архитектура, как заметили выше, не совсем правильная, то как объединить эти две модели в одну, учитывая, что количество строк/столбцов разное? Название: Re: Совет по дизайну. Две модели для данных Отправлено: vizir.vs от Сентябрь 22, 2014, 15:40 Вариант такой. Для функции data указывать роль. Создай две пользовательских роли hex и bin. В зависимости от роли будут и данные.
Название: Re: Совет по дизайну. Две модели для данных Отправлено: UVV от Сентябрь 22, 2014, 16:03 Вариант такой. Для функции data указывать роль. Создай две пользовательских роли hex и bin. В зависимости от роли будут и данные. Окей, с data разобрались. Чё делать с row/columnCount?Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Сентябрь 22, 2014, 17:15 Делегат отрисовывает ВСЁ как хочет. И никто ему не указ. Вообще.
Если уж так хотите сделать всё в модели - тупо сделайте в ней 2 режима HEX и BIN. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Old от Сентябрь 22, 2014, 18:21 Делегат отрисовывает ВСЁ как хочет. И никто ему не указ. Вообще. А как все начиналось... "неправильная архитектура"... а закончилось все как всегда - сделайте тупо. :)Если уж так хотите сделать всё в модели - тупо сделайте в ней 2 режима HEX и BIN. Вячеслав, все вы нормально делали, научите хранилище информировать модели о своем изменении (отсылкой сигнала), а в моделях ловите этот сигнал и обновляйте, только изменившиеся в хранилище данные. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Сентябрь 22, 2014, 18:40 Old я не понял вас. Какой сигнал, какие изменения в хранилище :)
А делать "тупо" нужно всегда, когда нужно сделать быстро. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Old от Сентябрь 22, 2014, 18:48 Old я не понял вас. Какой сигнал, какие изменения в хранилище :) Это потому, что вы ни секунды не думали над тем, о чем спрашивал ТС.А делать "тупо" нужно всегда, когда нужно сделать быстро. То что вы всегда делаете тупо, не означает что так надо делать.К тому же я не увидел, где ТС просит вас это сделать быстро. Наоборот, он спрашивал как это сделать хорошо. Название: Re: Совет по дизайну. Две модели для данных Отправлено: m_ax от Сентябрь 22, 2014, 20:27 Цитировать А делать "тупо" нужно всегда, когда нужно сделать быстро. Аха..) Вот после таких заявления, я начинаю лучше понимать пословицы типа: "Я не настолько богат, чтобы тратить деньги на дещёвые вещи") Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Сентябрь 22, 2014, 21:28 Главная мудрость пословиц - они друг другу противоречат, если не знали :D Ибо нет золотой середины.
Но когда нужно сделать за день - нет времени расписывать архитектуру. Я подумал. И вижу что у вас появилось хранилище. Откуда - я хз :D У ТСса 2 модели. Мб сначала предложить создать отдельное хранилище? А то вы как фокусник - создали хранилище из ниоткуда :) Вы предлагаете вынести хранилище из модели. НО... Но модель это и есть хранилище. Вынести функционал - это тоже костыль :D А так то, для внимательных - я предложил 2 варианта. Красиво и медленно или тупо и быстро. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Old от Сентябрь 22, 2014, 21:33 2Верес. Перечитайте первое сообщение. У ТС есть хранилище (данные) и есть две модели.
Может вы и подумали, только вряд ли поняли. Зато постов важных написали не мало. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Сентябрь 22, 2014, 21:56 Почитайте сами. У него есть ДАННЫЕ. Над которыми 2(две) модели.
Нет у него хранилища. У него сырые данные. Было бы хранилище, вот тогда он бы поступил по вашему совету :) Название: Re: Совет по дизайну. Две модели для данных Отправлено: Old от Сентябрь 22, 2014, 21:59 QByteArray это простое хранилище данных, к нему легко можно добавить сигнал о модификации.
Название: Re: Совет по дизайну. Две модели для данных Отправлено: m_ax от Сентябрь 22, 2014, 22:13 Цитировать Главная мудрость пословиц - они друг другу противоречат, если не знали Ибо нет золотой середины. Что там друг-другу противоречит?Я уж молчу о том, что ситуации, когда "пятки горят" и надо за один день сделать абы как - это подход реальных "find/replace/if-else/case" профессионалов) Это, конечно, к крайностям не относится) Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Сентябрь 22, 2014, 22:56 Давайте реализуйте мне за день программу сложности "я нихрена в этом не разбираюсь в первый раз вижу но делать надо". Я посмотрю на вашу архитектуру :)
Архитектура в первую очередь строится на знании предмета. А когда форс мажор, тут какие знания - тут лишь бы работало и быстрее. PS футуристичные рассказы как люди писали программы с превосходной архитектурой за день можете не приводить - единственный в них смысл в том, что эти люди знали предмет и имели заготовки по нему :) Название: Re: Совет по дизайну. Две модели для данных Отправлено: m_ax от Сентябрь 22, 2014, 23:07 Цитировать Давайте реализуйте мне за день программу сложности "я нихрена в этом не разбираюсь в первый раз вижу но делать надо". Я посмотрю на вашу архитектуру Так вот я вам и повторяю (десять раз и снова), если ставятся условия срочно-срочно наваять что-либо абы как за один день, (у студентов за еду) то у меня, лично, к таким шарашкам никакого доверия нет и никогда не было.. И не будет..( Поскольку, только лишь сама постановка такой задачи и сами требования, уже подразумевают весь это "профессионализм" как закрасчиков, так и горе-разработчиков, которые подписываются под этим.. А в итоге имеем то, о чём я и говорил, упоминая смысл той пословицы.. Название: Re: Совет по дизайну. Две модели для данных Отправлено: vbv от Сентябрь 23, 2014, 01:57 1. Реализовать в модели слоты.
2. сделать центральное событие. 3. зацепить его на слоты моделей. 4. Вызывать центральное событие для обновления данных. И не надо лохматить бабушку. Вопрос был "как обновить" а не как построить архитектуру. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Сентябрь 23, 2014, 07:25 Вот vbv и поставил жирную точку :D
Однако лохматить бабушку можно и продолжить, если у моделей имеется пункт "удалить запись", который должен быть своим у каждой модели :D Название: Re: Совет по дизайну. Две модели для данных Отправлено: vizir.vs от Сентябрь 23, 2014, 08:46 1. Реализовать в модели слоты. 2. сделать центральное событие. 3. зацепить его на слоты моделей. 4. Вызывать центральное событие для обновления данных. И не надо лохматить бабушку. Вопрос был "как обновить" а не как построить архитектуру. В модели уже есть слот. Называется refresh. Да и сигнал об изменении данных тоже модель имеет. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Igors от Сентябрь 23, 2014, 10:42 Если архитектура, как заметили выше, не совсем правильная, то как объединить эти две модели в одну, учитывая, что количество строк/столбцов разное? Никак, да и не нужно их объединять, главное чтобы данные были одни и менялись синхронно.В модели уже есть слот. Называется refresh. Да и сигнал об изменении данных тоже модель имеет. Ну и нормально, тогда что Вас тревожит? Цитировать Давайте реализуйте мне за день программу сложности "я нихрена в этом не разбираюсь в первый раз вижу но делать надо". Я посмотрю на вашу архитектуру Так вот я вам и повторяю (десять раз и снова), если ставятся условия срочно-срочно наваять что-либо абы как за один день, (у студентов за еду) то у меня, лично, к таким шарашкам никакого доверия нет и никогда не было.. И не будет..( Поскольку, только лишь сама постановка такой задачи и сами требования, уже подразумевают весь это "профессионализм" как закрасчиков, так и горе-разработчиков, которые подписываются под этим.. А в итоге имеем то, о чём я и говорил, упоминая смысл той пословицы.. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Сентябрь 23, 2014, 11:04 to Max: такие "шарашки" называются форс мажор и работа в команде. Без них никуда. Особенно когда у человека случается что-то и он выпадает к чертям. А второго специалиста нет.
Архитектура строится на знании, повторюсь. Знание приходит с опытом. Опыт приходит медленно. Потому одна из формул на которой зиждется разработка каждой программы выглядит примерно так Время разработки = время изучения предмета + время написания альфы + поиск и изучение библиотек + переработка архитектуры + написание релиза. В случае срочности формула будет выглядеть так Время разработки = поиск и изучение библиотек + написание релиза(оно же альфы). И никуда вы от этого не уйдёте. Только в идеальных условиях есть время на изучение, пробы, тесты, написание альфы, бета версий программы. PS ну и чисто по человечески - если ты работаешь пару лет и нормальный начальник попросит тебя попробовать это сделать (соответственно с плюшками типо премии), то отказаться нет желания. PPS можете не верить, но такой "срочный" подход плодит больше шедевров, чем размеренная деятельность. Название: Re: Совет по дизайну. Две модели для данных Отправлено: vulko от Октябрь 02, 2014, 09:54 У нас повсюду такие шедевры, начиная от дорог и автомобилей...
Прежде чем что-то делать, нужно продумать архитектуру. Если же делать по сценарию скачал либу, прикрутил к говнокоду -> релиз, то чаще всего времени это сожрет столько же либо даже больше, т.к. тыкая везде костыли и индусские заплатки, все это будет копиться как снежный ком и создавать все больше проблем при отладке и дальнейшем усложнении. Когда только начинал карьеру младшим sw developer'ом, был у меня в команде парень с небольшим опытом работы, что-то около двух лет, который отлично умел писать много много говно кода в день. А вся команда за ним фиксила это кривой код. Но он считал себя супер профи, бегал в комнату к архитекторам каждый день, но продолжал делать говно код. Производительность по количеству строк кода у него была раза в 2-3 выше чем у других в команде, а вот качество его кода было как минимум в те же 2-3 раза ниже. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Октябрь 02, 2014, 11:31 Я сам был на такой должности :D Учащимся.
И самое главное достоинство того парня (говно кодера, по вашим словам) - что его проекты работали так как надо и за короткое время. А у специалистов высокого уровня на это просто не было времени. Вот просто у него неделя на разработку архитектуры, неделя на альфу+тестирование, неделя на бету + тестирование. При это остальные его проекты стоят. А у новичка 2 дня на один проект. Это так называемое затыкание дыр. Если бы фирме нужен был качественный код, его бы обучили/выгнали. Но фирме нужны были готовые проекты и за короткое время. И пофиксить уже готовый проект гораздо проще, чем написать с нуля. PS и зря вы его так называете. Если вы его не обучили стандартам, которые используются в вашей фирме - это ваша проблема :) Ну и вопрос на засыпку - был ли у вас в фирме официальные правила оформления программного кода? Название: Re: Совет по дизайну. Две модели для данных Отправлено: Old от Октябрь 02, 2014, 11:40 И пофиксить уже готовый проект гораздо проще, чем написать с нуля. Да ладно. ;DНазвание: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Октябрь 02, 2014, 11:42 Ага. Гораздо проще.
Но в противовес - добавлять новый функционал сложнее. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Old от Октябрь 02, 2014, 11:46 Ага. Гораздо проще. Так одноразовые проекты (сделал, отдал и забыл) никому не нужны. Нормальные проекты можно развивать... в отличие от...Но в противовес - добавлять новый функционал сложнее. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Октябрь 02, 2014, 12:03 Представьте себе, сотни работников НИИ с вами не согласятся :D
Не знаю, мб в других областях программирования "одноразовые" и не нужны, но вот провести НИР без одноразовых не получится :) И таки да - иногда на один НИР приходится по 2-4 "одноразовых проекта". PS Научно-Исследовательская Работа. Название: Re: Совет по дизайну. Две модели для данных Отправлено: _OLEGator_ от Октябрь 02, 2014, 12:10 Есть хорошая книга по этой теме.
Эдвард Йордон. Путь камикадзе. Как разработчику программного обеспечения выжить в безнадежном проекте. И да Верес, видимо, ярый представитель быдлокодеров, уж извините) иначе бы не оправдывался. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Октябрь 02, 2014, 12:19 Книги об программировании пишутся разными людьми. И то, что для них хорошо, в другой области будет плохо.
PS не извиняю. Хамло вы редкостное. Ну оскорбляя других, вы выставляете себя хамом, так что увы. PPS надо понимать точку зрения себя и собеседника. Вы же меня не понимаете. Вы отрицаете необходимость срочного написания программ, но куда вы от неё денетесь? Название: Re: Совет по дизайну. Две модели для данных Отправлено: vulko от Октябрь 02, 2014, 14:43 И самое главное достоинство того парня (говно кодера, по вашим словам) - что его проекты работали так как надо и за короткое время. Как раз таки работали они не как надо, но в короткое время да. Это очень кажущееся впечатление того что работает как надо. До первых тестов наговнокоженного. В итоге на дальнейшую поддержку такого кода и багфикс проекта, не говоря о новых функциональностях уходит куда больше времени, чем было сэкономлено в начале. Еще пример из личного опыта: Может вам знакома такая библиотека как WebRTC. Это открытый говнокод от гугла. Жутко кривое. 2 года фиксили эту библиотеку для продукта, чтобы оно хоть как-то работало. Там весь набор, начиная от дедлоков, рейс кондишенов, огромного количества крешей и заканчивая ликами убивающими айфоны и айпады до состояния когда спасает только хард ресет. По затратам человеко-часов можно было с нуля все это написать куда более прямо. Либо можно было взять более менее прямую библиотеку и на её основе делать. Так что говно код сейчас, это всегда гемор в будущем. Я не спорю, бывают ситуации когда нужно сделать маленькую прикладную апликуху, которая вообще может потребоваться только на этапе разработки/тестирования, тут можно не задумываться над архитектурой и немного поговнокодить. В остальных случаях это всегда приводит к одному и тому же результату. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Октябрь 02, 2014, 15:28 Тут нужно как обычно смотреть на скорость и необходимость. Одна быстронаписанная утилитка может сэкономить часы для разработки/тестирования основной программы.
Конечно потом эту утилитку надо будет переписать, но острая необходимость её переписать будет отдалена в далёкое будущее. В идеале каждую программу надо переписывать раза 3-4. Именно из-за того, что предусмотреть всё с самого начала нельзя. И программа написанная за неделю мало будет отличаться от программы написанной за 2 дня. А вот программа написанная за месяц уже может претендовать на звание не говнокода. Но это месяц без программы :) PS к тому же такая программа вырисовывает будущую архитектуру. Можно сказать поднимает навык :D Название: Re: Совет по дизайну. Две модели для данных Отправлено: vulko от Октябрь 03, 2014, 09:13 Все всегда предусмотреть сложно, но не невозможно!
Просто нужно прежде чем что-то делать, подумать как это сделать. Часто спихивая очередную задачу на разработчика, все целиком ложиться на его совесть и даже код ревью ничем уже не поможет, т.к. если все просто, то никаких вопросов нет, а если все сложно, то врядли кто-то будет вникать в архитектуру. Глянули, закомплитили -> профит. Цитировать Одна быстронаписанная утилитка может сэкономить часы для разработки/тестирования основной программы. Конечно потом эту утилитку надо будет переписать, но острая необходимость её переписать будет отдалена в далёкое будущее. Логика неверная. Это просто желание схалтурить сейчас и отодвинуть все на далекое будущее. Хорошо если утилитка нужна только на этапе разработки/отладки. А если это часть конечного продукта, то халтурить не стоит. Потому что сэкономленное сейчас время, потратиться как минимум в дальнейшем. Но это крайне оптимистичный прогноз. В реальности же потраченное позже время, будет все равно больше. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Октябрь 03, 2014, 11:05 Расписывать бесполезно, как я понял.
Вкратце - как бы вы ни старались, первая версия программы будет кривой, забагованной и страшной по архитектуре. Хорошую программу переписывают полностью как минимум один раз. ИМХО. Название: Re: Совет по дизайну. Две модели для данных Отправлено: OKTA от Октябрь 03, 2014, 11:10 Будем честны - идеал недостижим, сколько не переписывай ;D
Название: Re: Совет по дизайну. Две модели для данных Отправлено: vulko от Октябрь 06, 2014, 09:49 Расписывать бесполезно, как я понял. Вкратце - как бы вы ни старались, первая версия программы будет кривой, забагованной и страшной по архитектуре. Хорошую программу переписывают полностью как минимум один раз. ИМХО. ну если все делать на отъе**сь, конечно так все и будет)) а если сперва продумать архитектуру и вести разработку последовательно, не забывая тестировать работу написанного, тыкать ассерты в нужные места, то все будет чудесно. конечно 0 багов не будет, но их количество будет сведено до минимума. а когда поверх непродуманной и кривой архитектуры начинать городить говнокод, количество багов растет как снежный ком. в итоге получается "франкенштейн", у которого к тому же руки растут из ж*пы, а ноги из ушей торчат. и автор пытается все это заставить бегать и играть в футбол. когда приходит осознание безнадеги, начинается переписывание. а ведь все это можно было сделать сразу, просто иногда вместо того чтобы слепить что-то побыстрее, нужно сперва обдумать как оно должно и будет работать. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Октябрь 06, 2014, 15:44 Очередной идеалист. Все мы через это проходим :D
Название: Re: Совет по дизайну. Две модели для данных Отправлено: OKTA от Октябрь 06, 2014, 15:46 Гейтс Билл был таким же, но все мы знаем, что получилось ;D
Название: Re: Совет по дизайну. Две модели для данных Отправлено: vulko от Октябрь 13, 2014, 09:36 Очередной идеалист. Все мы через это проходим :D Сомневаюсь что говнокодеры через это проходят. Они всегда хотят как бы похалтурнее. Забывают правда, что кроилово всегда ведет к попадалову. Другое дело что попадалово не обязательно на них приходится. П.с. я не идеалист, просто у меня есть личная отвественность. чего и вам желаю. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Октябрь 13, 2014, 12:38 Личная ответственность != затягивание срочной работы :)
Как и везде тут нужно идти по тонкой грани между говнокодом и идеальным кодом. PS если хоть 1 программист в мире скажет - "я не говнокодил никогда", то его можно сразу бить камнями - врёт как дышит. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Old от Октябрь 13, 2014, 16:27 Как и везде тут нужно идти по тонкой грани между говнокодом и идеальным кодом. Нифига себе "тонкая грань". :) Вы указали две крайности между которыми все. :)Название: Re: Совет по дизайну. Две модели для данных Отправлено: vizir.vs от Октябрь 13, 2014, 17:00 ИМХО крупный проект сложно написать круто с первого раза. Поэтому и выпускают версии 1.1, 2.0 и так далее.
Название: Re: Совет по дизайну. Две модели для данных Отправлено: Igors от Октябрь 13, 2014, 17:37 Дело не в сроках. Наивно полагать что "вот я все тщательно обдумаю, сделаю основательно - и все будет Ok". Обдумывание хорошо (и даже необходимо) - но до определенного предела. Если обсуждать будущий проект с коллегами (исполнителем, заказчиком), то в какой-то момент становится заметно: разговор пошел по кругу, ничего принципиально нового уже не вносится. И тогда надо начинать делать. И вылезут проблемы которые недооценили (а иногда и не подозревали). Это нормально
Название: Re: Совет по дизайну. Две модели для данных Отправлено: Old от Октябрь 13, 2014, 20:21 Если обсуждать будущий проект с коллегами (исполнителем, заказчиком), то в какой-то момент становится заметно: разговор пошел по кругу, ничего принципиально нового уже не вносится. И тогда надо начинать делать. И тогда надо начинать думать и проектировать. Желательно вдалеке от компьютера с блокнотом и карандашом.И вылезут проблемы которые недооценили (а иногда и не подозревали). Это нормально Да, если из разработки выкинуть главный этап - проектирование, то проблемы вылезут практически сразу. Это нормально.Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Октябрь 13, 2014, 21:02 Все программы рождены из гавнокода :)
Это как яйцо и курица, правда порядок мы точно знаем. Говнокод -> идеальный код. Название: Re: Совет по дизайну. Две модели для данных Отправлено: vulko от Октябрь 14, 2014, 08:41 Если обсуждать будущий проект с коллегами (исполнителем, заказчиком), то в какой-то момент становится заметно: разговор пошел по кругу, ничего принципиально нового уже не вносится. И тогда надо начинать делать. И тогда надо начинать думать и проектировать. Желательно вдалеке от компьютера с блокнотом и карандашом.И вылезут проблемы которые недооценили (а иногда и не подозревали). Это нормально Да, если из разработки выкинуть главный этап - проектирование, то проблемы вылезут практически сразу. Это нормально.плюсую. именно с блокнотом и карандашом, а не "в уме", как некоторые очень уверенные в себе говнокодеры :) то что в некоторые детали или аспекты могут остаться незамеченными, на первичном этапе проектирования, это понятно. но это не значит что нужно забить и начать делать. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Igors от Октябрь 14, 2014, 09:27 И тогда надо начинать думать и проектировать. Желательно вдалеке от компьютера с блокнотом и карандашом. Ну это всего лишь самореклама типа "тихо! Чапай думать будет" :) Чтобы возникли мысли - нужен какой-то материал, опыт, а откуда это возьмется на начальном этапе? Поэтому подозреваю что в блокноте ничего путного так и не появится :) Приведите живой пример такого "проектирования", а если затрудняетесь - я дам проект.... Да, если из разработки выкинуть главный этап - проектирование, то проблемы вылезут практически сразу. Это нормально. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Old от Октябрь 14, 2014, 09:34 Чтобы возникли мысли - нужен какой-то материал, опыт, а откуда это возьмется на начальном этапе? Вы поговорили с заказчиком, это начальные данные. После этого задача разработчика продумать, как это можно реализовать: какие будут классы, какие объекты, как они будут взаимодействовать - это и есть проектирование.И только когда это будет осознанно и описано, можно приступать к "надо начинать делать". Приведите живой пример такого "проектирования", а если затрудняетесь - я дам проект. Весь софт каким вы пользуетесь так разрабатывается.Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Октябрь 14, 2014, 11:22 Old вы это применимо только тогда, когда вы разрабатываете программу в своей специализации. Т.е. у вас уже было множество таких проектов и именно ВАШ опыт и ВАШИ ошибки и ВАШ говнокод даёт вам возможность сидеть с блокнотиком :)
А когда у вас нет ни ОПЫТА, ни ОШИБОК, ни знания предмета, то вам придётся сесть и писать говнокод. И смотреть что получается. И получать опыт. И только ПОТОМ ПРАВИЛЬНО проектировать с блокнотом :) Название: Re: Совет по дизайну. Две модели для данных Отправлено: Old от Октябрь 14, 2014, 11:25 А когда у вас нет ни ОПЫТА, ни ОШИБОК, ни знания предмета, то вам придётся сесть и писать говнокод. А что можно написать ничего не зная о том что пишешь? :)Вначале нужно сесть с блокнотом, книгами и разобраться, а только потом садится и писать "class MainWindow". Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Октябрь 14, 2014, 12:39 Мда )
Самый удачный пример - надо заколотить гвоздь. Есть молотки, стенка и гвозди. Можно сесть с блокнотом и нихера ничего не делать, ведь ты не знаешь что такое молоток, гвоздь, только названия. А можно пощупать молоток, понять где твёрдая часть. Пощупать гвоздь. Пощупать стену. Попробовать забить. Попробовать забить по другому. По третьему. И так до достижения результата. Потом накопится опыт и ты будешь забивать двадцатку одним ударом. Постижение нового всегда идёт от практики, а не от теории. Как бы человек не знал теорию, он слаб в предмете если не знает практику. Название: Re: Совет по дизайну. Две модели для данных Отправлено: m_ax от Октябрь 14, 2014, 12:44 Цитировать Пощупать гвоздь. Пощупать стену. Попробовать забить. Попробовать забить по другому. По третьему. И так до достижения результата. Потом накопится опыт и... Потом, если говорить о реальности, придётся нанимать нового удальца-молодца, поскольку первый перебьёт себе все пальцы) А вместе с ним ещё и новую стену и гвозди)Название: Re: Совет по дизайну. Две модели для данных Отправлено: vulko от Октябрь 14, 2014, 12:50 Мда ) Самый удачный пример - надо заколотить гвоздь. Есть молотки, стенка и гвозди. Можно сесть с блокнотом и нихера ничего не делать, ведь ты не знаешь что такое молоток, гвоздь, только названия. А можно пощупать молоток, понять где твёрдая часть. Пощупать гвоздь. Пощупать стену. Попробовать забить. Попробовать забить по другому. По третьему. И так до достижения результата. Потом накопится опыт и ты будешь забивать двадцатку одним ударом. Постижение нового всегда идёт от практики, а не от теории. Как бы человек не знал теорию, он слаб в предмете если не знает практику. Речь идет о том как надо делать, а не о том как надо учиться делать. Если всегда начинать с говнокода, никогда не научишься делать нормально сразу, потому что сделать большой рабочий проект без кривостей архитектуры это не гвоздь забить, это как дом построить в котором можно нормально жить, а не так что смыл унитаз, говно на улицу стекло. Название: Re: Совет по дизайну. Две модели для данных Отправлено: Old от Октябрь 14, 2014, 12:51 Потом, если говорить о реальности, придётся нанимать нового удальца-молодца, поскольку первый перебьёт себе все пальцы). Это если он сообразит, что гвоздь нужно забивать в стену молотком. В реале он может молоток куда нибудь себе вставить или проглотить гвоздь или ... /* фантазия у некоторых очень богата :) */Название: Re: Совет по дизайну. Две модели для данных Отправлено: Bepec от Октябрь 14, 2014, 18:49 Мы берём нормальную и психически здоровую особь.
Но без метода проб и ошибок ничего вы не сделаете. Я не спорю, я сейчас сам могу склепать довольно затейливое приложение с нормальной архитектурой, но это возможно именно после десятков проектов :) Название: Re: Совет по дизайну. Две модели для данных Отправлено: Igors от Октябрь 14, 2014, 20:02 Весь софт каким вы пользуетесь так разрабатывается. я сейчас сам могу склепать довольно затейливое приложение с нормальной архитектурой, Вспомнился старый мультфильм где там хвастуны землянику собирали :)Название: Re: Совет по дизайну. Две модели для данных Отправлено: Old от Октябрь 14, 2014, 20:17 Вспомнился старый мультфильм где там хвастуны землянику собирали :) Та вы не комплексуйте. :) |