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

    search
    @search
    мама говорит что я особенный
    Как сказал Гагарин: делайте то от чего вас прёт и будет вам счастье.
    Ответ написан
    Комментировать
  • Какой вариант применения исключений лучше?

    search
    @search
    мама говорит что я особенный
    Первый вариант предпочтительнее. Потому что первый вариант - это рецепт: всегда кидайте исключение когда функция не может вернуть (или сделать) то что от неё ждут.

    Второй вариант неспособен предоставить однозначного решения, потому что о том "что такое исключительная ситуация на уровне программы" можно рассуждать бесконечно.
    Ответ написан
    Комментировать
  • В чём причина постоянного переделывания кода?

    search
    @search
    мама говорит что я особенный
    На самом деле, рефакторинг - это неотъемлемый элемент процесса разработки. Без него никак. На поздних этапах обязательно всплывают неучтенные подробности. К тому же сам разработчик развивается и стремится улучшить то, что было написано несколькими месяцами ранее.

    Но если в рамках рефакторинга программист коммитет больше 20 файлов за раз, то есть вариант что он не видит всей картины, поэтому пилит "супергибкую архитектуру". В этом случае, можно сесть вместе с разработчиком и составить майндмеп всех элементов будущей системы и связей между ними. Это будет полезно как для разработчика, так и для менеджера проекта.
    Ответ написан
    5 комментариев
  • Как определиться с деятельностью?

    search
    @search
    мама говорит что я особенный
    Моя училка по информатике твердила что для того чтоб научиться программировать, нужна задача, которую интересно решать. Золотые слова. Язык/платформа/технология - это всё вторично, пока нет задачи. Вот варианты как придумать что делать:
    - сервис/сайт/плагин-для-браузера, который был бы полезен лично вам
    - помогите родственникам/друзьям с автоматизацией их бизнеса. Задаром. Просто так. Вам зачтётся 100%
    Ответ написан
    4 комментария
  • Что делать со старыми кусками кода в проекте?

    search
    @search
    мама говорит что я особенный
    Kill them with fire. Удаляйте их с гомерическим хохотом.

    Но вобще в огромных коммерческих проектах типа booking.com не разрешается удалять старый код слёту и по прихоти. Что там делают? На входе в функцию ставят счётчик, который увеличивается на единицу при каждом вызове функции и пишет это дело в лог. Так же фиксируется когда функция была вызвана в последний раз. Если в течении трёх месяцев функция не была вызвана ни разу, то её сносят.
    Ответ написан
    Комментировать
  • Какие есть книги про связь высшей математики и программирования?

    search
    @search
    мама говорит что я особенный
    Сожалею, но они все про алгоритмы, теорию множеств, теорию категорий или лямбда-исчилениям.

    По организации кода могу только порекомендовать классику:
    • Приемы объектно-ориентированного проектирования. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Д.
    • Шаблоны корпоративных приложений. Мартин Фаулер
    • Чистый код. Роберт Мартин


    UPD
    По сути, организация кода - это ремесло, а не наука.
    Ответ написан
    Комментировать
  • Знание которые не устареют через 10-20 лет?

    search
    @search
    мама говорит что я особенный
    Существует набор базовых знаний, находящийся в корне любой ИТ-концепции. Эти знания редко применяются программистами напрямую, так как они реализованы непосредственно в библиотеках. Но они оказывают огромное влияние на общий процесс мышления и на способность усваивать новую информацию. Именно поэтому такие успешные компании, как Гугл, Эпл, Амазон, Фейсбук и т.д. прежде всего проверяют базовые знания, а не знание языков/фреймворков/библиотек, потому что это всё вторично и осваивается за пару недель. Да, такие штуки, как:
    • теория вероятностей и математическая статистика
    • теория игр
    • теория информации и кодирования
    • теория тестирования
    • теория систем массового обслуживания
    • теория принятия оптимальных решений

    занимают чуть больше, чем пару недель, но в них нет ничего принципиально невозможного.

    Не стоит обманываться тем что мы редко встречаем специалистов с глубокими базовыми знаниями. Просто подобные люди находятся, чаще всего, не в зоне нашего обитания, а где-нибудь в Калифорнии, работая в компаниях из списка Fortune 500. Такие дела.
    Ответ написан
    Комментировать
  • Как повысить компрессию JS кода не нарушая внешний вид (читабельность)?

    search
    @search
    мама говорит что я особенный
    Я так понял что вы еще не разобрались с тем как пользоваться системой контроля версий. Отсюда и желание положить несжатые файлы на сервак чтоб не потерять их. Так никто не делает, потому что это путь к провалу. Как делают:
    1. Весь код хранится в системе контроля версий (GIT). Считайте что это файловое хранилище вашего проекта, к которому имеет доступ любой разработчик
    2. Перед тем как залить код на сервер, он прогоняется через программу, которая жмёт и склеивает в один файл весь javascript и css. Обычно этот шаг автоматизирован. В вашем случае я бы начал делал эту рутину руками, пока не надоест и не захочется это автоматизировать при помощи, например, Gulp.

    Вот тут вы можете зарегистрироваться и создать приватное GIT-хранилище для своего проекта: https://bitbucket.org/, а затем положить в него файлы проекта. После того как вы зарегистрируетесь, и создадите GIT-хранилище (кстати, в терминах гита, хранилище называется "репозиторий"), у вас появится ссылка на это хранилище. Эта ссылку - тот адрес, по которому хранятся рабочие файлы вашего проекта. Для других участников проекта (разработчики, заказчики, тестировщики) гит-репозиторий проекта важен даже больше, чем файлы на сервере. Потому что к файлам на сервере обычно имеют доступ только избранные, а к файлам проекта дожны иметь доступ все участники.
    Ответ написан
    Комментировать
  • Правильно ли я использую делегирование?

    search
    @search
    мама говорит что я особенный
    Во-первых, вы молодец, что движетесь в этом направлении. Продолжайте в том же духе.

    По коду есть следующие замечания/предложения по улучшению:
    - Делегирование подразумевает передачу некоторого функционала другому объекту. По сути, когда вы создали объект класса и выполнили метод этого объекта - вы уже делегировали некую функциональность. Например в контроллере задачу по выборке юзера вы делегировали объекту класса User. В случае же с классами User и Image, происходит внедрение класса Image в User (привет Dependency Injection), но дальше Image никак не используется классом User. Т.е. происходит Dependency Injection, но нет делегирования. На том этапе, который я сейчас вижу, я бы не стал внедрять Image в User. Сейчас это выглядет как задел на будущее, но любой опытный программист подтвердит, что композиция, созданная на будущее - ненужная композиция.
    - Глядя на структуру классов, мне не совсем понятно чем они занимаются. Вроде как класс User и Image должны хранить информацию о пользователе и картинке (об этом нам говорит $id в конструкторе). Но в тех же классах есть логика по выборке данных из базы. По-хорошему выборкой должны заниматься другие классы. Лучше разделить задачи выборки и хранения на 2 разных класса. Я очень рекомендую вам ознакомиться с паттерном Data Mapper (наример тут designpatternsphp.readthedocs.io/en/latest/Structu... или тут codeinthehole.com/projects/domain-model-mapper-a-p... На мой взгляд, Data Mapper - это то что вам сейчас нужно реализовать чтоб получить чёткую структуру кода и разделение ответсвенности за выбор/хранени.

    По поводу делегирования. Просто старайтесь чтоб ваши классы были как можно меньше. Критерий 1-3 метода на один класс вполне может подойти (помните, что это не золотое правило). Когда у вас появится желание добавить еще один метод в класс A - спросите себя, а нужен ли там вообще этот метод? Может лучше переложить всю ответственность на новый класс B, в который вы будете передавать объект A (или какое-то из его полей), а сам класс B уже проведёт необходимые преобразования/вычисления? Это и будет делегирование в том виде, в котором его ждёт от нас банда четырёх (если вы еще не читали их книгу, то это must read для любого программиста).

    Фух, длинный ответ получился. Надеюсь, что не зря.
    Ответ написан
    3 комментария
  • Кто чаще всего обращается за услугами на фриланс биржу?

    search
    @search
    мама говорит что я особенный
    Проблема (для заказчиков) в том, что спрос на разработчиков на западе очень высок. На то чтоб найти толкового разработчика могут уйти месяцы и десятки тысяч долларов. Поэтому к услугам фриланса прибегают все кому не лень.

    В своё время мне удалось поработать в самом Апворке (работал в команде, отвечающей за джоб посты) и помню что среди клиентов были, например, ebay.com и airbnb.com. До этого работал на внутреннем проекте для bwin.com (через тот же апворк). Это из крупных заказчиков, о которых мне точно известно.

    Короче, на фрилансе можно встретить и тех, кто туда пришел в надежде сэкономить и тех, кто туда пришел в надежде быстро найти разработчика.
    Ответ написан
    Комментировать