Ответы пользователя по тегу Программирование
  • Как создавать объект с большим количеством свойств?

    qonand
    @qonand
    Software Engineer
    Обязательные параметры стоит задавать в конструкторе класса - это позволит обеспечить обязательность их указания, опциональные с помощью геттеров и сеттеров. Кроме того стоит пересмотреть действительно ли все обязательные поля являются обязательными - или некоторые все таки нет + по возможности параметры стоит упаковать в объекты-значения
    Ответ написан
  • Вопрос организации архитектуры. Производительность или поддерживаемость?

    qonand
    @qonand
    Software Engineer
    Не стоит зацикливаться на принципах и слепо им следовать. Выбирать между производительностью и поддерживаемостью всегда стоит исходя из особенностей проекта. Стоит задуматься насколько вообще важна поддерживаемость в конкретном проекте и насколько ее могут ухудшить решения улучшающие производительность. Если проект мелкий или разрабатывается как какое-то временное решение, тогда маловероятно что производительный код сильно ухудшить поддерживаемость. Если же проект большой и в будущем в него будут активно вноситься изменения - стоит предпочесть поддерживаемость производительности
    Ответ написан
    Комментировать
  • Формировать отчёт целиком и "на лету", или по мере прихода данных?

    qonand
    @qonand
    Software Engineer
    все зависит от проекта ... если у Вас небольшой проект с маленьким объемом данных (имею ввиду данные по которым нужно строить отчет) которым будут пользоваться пару юзеров - тогда проще всего строить отчет на лету.. Если же проект с большим объемом данным, которым постоянно будет пользоваться большое количество юзеров - тогда вполне уместно заранее формировать отчет в БД.
    Ответ написан
    Комментировать
  • Скажите, какие(ая) есть книги(а) по основам программирования (алгоритмы, структура данных, ООП и т.д.)?

    qonand
    @qonand
    Software Engineer
    ООП
    Бертран Мейер. "Объектно-ориентированное проектирование программных систем"
    Гради Буч “Объектно-ориентированный анализ и проектирование с примерами приложений”

    Алгоритмы / структуры данных
    Томас Кормен "Алгоритмы построение и анализ"
    Генри Уоррен "Алгоритмические трюки для программистов"
    Николас Вирт "Алгоритмы и структуры данных"
    Дональд Кнут "Искусство программирования"
    Ответ написан
    Комментировать
  • Что это за шаблон проектирования и насколько он удачен?

    qonand
    @qonand
    Software Engineer
    Что это за шаблон проектирования? Вроде как синглтон а вроде и нет.

    FlyweightFactory
    Как по вашему, он удачен? В моем случае он показал себя хорошо, однако я мог просто не попасть на какие-то проблемные места, что думаете?

    Сложно судить т.к. удачное использование шаблона зависит только от задачи к которой он применяется. Если Ваши объекты особо не имеют состояний, тогда данный паттерн вполне уместно применить, если же Ваши объекты это сущности - тогда стоит применить паттерн Identity Map
    Ответ написан
  • Структурирование исключений. Что вы указываете в качестве exeption code?

    qonand
    @qonand
    Software Engineer
    Как по мне создание справочника кодов бессмысленная и геморройная вещь.
    Почему геморройная - Вы сами на этот вопрос ответили.
    Почему бессмысленная: Вы думаете что клиенты будут обращаться в техподдержку и сразу говорить код ошибки? на практике такого не будет... клиент обратившись просто скажет "Я тут клацнул кнопку а оно перестало работать", и сотрудникам поддержки все равно придется уточнять что и как там у него случилось. Так что как-бы коды ничего не изменят. К тому же по началу справочник будет добросовестно вестись, а в процессе эксплуатации клиент/начальник скажет какому-то программисту Васе - запили как фичу на проекте по быстрому, он ее сделает но в справочник данные не внесет, ибо нафик ему нужен этот гемор. Поэтому как бы актуальность справочника скорее всего на практике пострадает.

    Зачем вообще коды? Возникла ошибка - вернули 500 статус и описание проблемы, записали подробную информацию в лог и все. Обратился клиент в тех. поддержку - посмотрели что за исключение возникло, посмотрели его stack-trace в логе и все. Грамотно сформированный лог + система поиска по нем решают все проблемы с поддержкой.
    Ответ написан
    7 комментариев
  • Как реализовать автопродление подписки?

    qonand
    @qonand
    Software Engineer
    По поводу сервисов google не скажу, но делать продление после завершения текущей подписки не очень хороший вариант. Есть риск что процесс продления задержится, либо произойдет какой-то сбой при ее продлении, а это соответственно приведет к тому что пользователь какое-то время не сможет юзать необходимый ему функционал. Поэтому лучше реализовывать продление подписки за ранее, скажем за 5-10 минут до момента окончания текущей подписки (соответственно делать это все через демон).
    Ответ написан
    Комментировать
  • SQL запрос подписки подписчиков?

    qonand
    @qonand
    Software Engineer
    если правильно понял проблему, то можно обойтись без left join и прочего, а просто сделать
    SELECT * FROM tablename WHERE col1 = 1 OR col1 IN (SELECT col2 FROM tablename WHERE col1 = 1)
    Ответ написан
  • Хранение массива в базе данных?

    qonand
    @qonand
    Software Engineer
    Хранить такие данные в сериализованом массиве вообще не тру. Для таких задач либо создаются три таблицы:
    - Товары
    - Характеристики
    - Значение характеристики для товаров
    либо используются NoSQL базы данных. А выбор из этих подходов стоит делать исходя из требований и нагрузок Вашей системы.
    Ответ написан
    Комментировать
  • Как пофиксить SQL запрос?

    qonand
    @qonand
    Software Engineer
    ошибка возникает в следствии попытки добавить данные с одинаковыми Primary Key. Используйте UPSERT если это позволяет Ваша версия постгреса, если не позволяет - в интернете полной информации как реализовать самому его аналог в более старых версиях.
    Ответ написан
  • Как правильно назначать алиасы таблицам и столбцам в mysql?

    qonand
    @qonand
    Software Engineer
    если Вы внимательно посмотрите на пример, то увидите что там идет селект с подзапроса, которому присвоен псевдоним. В Вашем же коде чему присвоен псевдоним? ничему... должно быть так
    SELECT model
    FROM table_name AS t1
    WHERE model = 1401

    т.е. псевдоним Вы должны присваивать либо конкретной таблице, либо конкретному полю, либо конкретной выборке
    Ответ написан
    2 комментария