Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (9)

Наибольший вклад в теги

Все теги (77)

Лучшие ответы пользователя

Все ответы (88)
  • Когда в PHP использовать интерфейсы, а когда абстрактные классы?

    sainnr
    @sainnr
    Как пишут умные люди (Шилдт, Троелсен) в своих умных книжках, интерфейс определяет функциональные возможности, поведение — «что именно следует делать, но не как это делать» (Г.Шилдт, Полное руководство C#). В абстрактном классе «определяется лишь самая общая форма для всех его производных классов, а наполнение ее деталями предоставляется каждому из этих классов» (там же).

    Простой пример, в контексте графического редактора можно определить:
    Абстрактный класс — Figure (геометрическая фигура), от него могут быть образованы классы конкретных фигур — например, Rectangle, Circle и т.д.
    Интерфейс — Drawable (то, что можно нарисовать). Он может быть реализован как во всех классах конкретных фигур (Circle, Rectangle), так и в других классах, не образованных от абстрактного Figure.
    Ответ написан
    Комментировать
  • Выбор PHP фреймфорка?

    sainnr
    @sainnr
    Предлагаю посмотреть в сторону Yii Framework. ООП, MVC, автогенерация кода, адекватное коммьюнити, есть литература (на англ. и на рус.).

    Есть хорошая книга (на англ.) с примером построения конкретного приложения, используя большинство возможностей Yii и применения TDD:
    Jeffrey Winesett — Agile Web Application Development with Yii 1.1 and PHP5

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

    sainnr
    @sainnr
    Позвольте и мне высказать свою точку зрения. Как правильно отметили выше, объективно оценить знания программиста по числовой шкале (хоть по 100..0-бальной), пожалуй, невозможно. Да и наверное не нужно, так как в каждой компании требуют различные знания (кто еще кроме компаний будет вас оценивать?).

    Тем не менее, можно выделить несколько категорий знаний, по которым можно составить более-менее объективную картину программиста. Например, сюда можно отнести:
    — владение различными ЯП;
    — опыт работы с каждым из них;
    — работа в команде;
    — участие в OpenSource-проектах;
    — наличие собственных разработок;
    — знание паттернов;
    — знание алгоритмов, структур данных;
    — знание методологий разработки;
    — знакомство с системами контроля версий, тестирования;
    — и т.д.

    Несомненно, картина получается далеко не полная — важную роль играют, например, и личные качества или другие индивидуальные характеристики, + в каждой организации требуется что-то свое. Но по вышеперечисленным категориям можно сопоставить себя и другого программиста, понять свой уровень относительно кого-то еще.

    По поводу места работы. Лично мое мнение такое, что если вы хотите быть высококвалифицированным специалистом конкретной области (в данном случае, программистом), то лучше работу искать в «профильных» организациях (для данного случая, занимающихся разработкой софта). По своему (не особо богатому пока) опыту уже могу сказать, что специфика работы в таких «профильных» организациях сильно отличается от «непрофильных».

    Наверное, это можно объяснить тем, что профильные живут тем, что получают деньги со своих продуктов, и программисты в них играют ключевую роль. Поэтому, самой компании выгодно, чтобы их специалисты развивались и были высококвалифицированными и выполняли задачи разработки как можно эффективнее («работает — неплохо, но старайся сделать еще лучше, думай как»).

    В непрофильных же — работа программиста чаще всего необходима для поддержания внутренней информационной инфраструктуры, от ИТ-специалистов требуется лишь, чтобы они просто выполняли свою работу («работает — ну и хорошо, следи, чтобы не сломалось»).

    Из этого очевидно, что в профильных компаниях вам намного проще расти как специалисту — в этом заинтересованы обе стороны (чем ты «круче», тем больше платят). Во втором случае, в этом заинтересованы только вы, да и то не всегда (зачем, если платить будут столько же).

    По поводу собеседований. Ходить на них — весело, если выбрать верный настрой. Представьте себе, что вы вообще не хотите попасть в эту компанию, а пришли лишь показать все, что вы умеете, «какой вы из себя хороший специалист». Конечно, не стоит выпячивать свое ЧСВ при собеседовании — ведите себя естественно; в тоже время, убиваться в случае неудачи не стоит — вы же совсем и не хотели к ним идти работать.

    А чтобы было о чем рассказать, в свободное время (оно же у вас есть?) разрабатывайте «для себя» разные программки. Ну например, напишите какой-нибудь парсер, поработайте с API различных систем (того же Яндекса), сделайте собственный таск-менеджер, придумайте сами интересную вам небольшую идею и доведите ее до конца. В каждой такой задаче можно найти много тонких моментов — оптимизация скорости алгоритма, структуры БД, применение паттернов, взаимодействие компонент, написанных на разных ЯП и т.д.

    Многовато текста получилось…
    Ответ написан
    3 комментария
  • Чистый код: имена классов?

    sainnr
    @sainnr
    Я думаю, что именно Parser их также не устраивает, как и Manager или Processor. В качестве допустимого названия, они приводят в пример AddressParser, т.е. парсер, применимый конкретно к адресу. Аналогично, были бы допустимы варианты, например, AccountManager или TemplateProcessor.
    Ответ написан
    2 комментария
  • Какие паттерны проектирования в своих веб-приложениях вы использовали

    sainnr
    @sainnr
    Abstract Factory, Singleton, Facade, Adapter, вроде бы все. Остальные значительно реже.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (4)