• Как подключить оплату с сайта через Visa/Mastercard?

    mezastel
    @mezastel
    Финансовая математика, программирование
    Я использую e-junkie: это фактически PayPal только самому ничего делать не надо. 5 долларов в месяц фикс-прайс. Просто супер.
    Ответ написан
    2 комментария
  • Книга по шаблонам проектирования?

    DimonSmart
    @DimonSmart
    Kaspersky Lab Developer
    Если с паттернами только начинаешь знакомиться то очень последовательное изложение в книге Фримен, Фримен, Сьерра: Паттерны проектирования
    Её рекомендую читать в бумаге прямо с начала и последовательно.

    Для более продвинутого изучения рекомендую книгу Теплякова Паттерны проектирования
    Там помимо собственно самих паттернов хорошо описывается как научиться ими не злоупотреблять.

    Про классику - если уже очень хорошо знаешь что такое паттерны и имеешь по ним своё мнение - читать можно. Для изучения с начала - не очень подходит.
    Ответ написан
    Комментировать
  • Часто ли вы используете интерфейсы?

    @Beltoev
    Живу в своё удовольствие
    Самый простой пример, который приходит на ум: представьте, что вы хотите получать оповещения об ошибках на сайте по email/смс/чему-нибудь ещё.

    С интерфейсами ваше решение будет выглядеть как-то так:
    // Собственно, сам интерфейс оповещений
    public interface INotification
    {
        void Notify(string text);
    }
    
    public class EmailNotification : INotification
    {
        public void Notify(string text)
        {
    		// код по отправке почты
        }
    }
    
    public class SmsNotification : INotification
    {
        public void Notify(string text)
        {
    		// код по отправке смс
        }
    }
    
    // ... Еще какие-нибудь классы оповещений
    
    
    // В каком-нибудь классе, где может появиться ошибка
    public class MaybeErrorClass
    {
        private INotification _notification;
    
        public MaybeErrorClass(INotification notification)
        {
    		// Класс не должен знать, по какому каналу оповещать об ошибках.
    		// Он работает с абстракцией
            this._notification = notification;
        }
    
    	// Очень простой пример метода, в котором ожидаем генерацию ошибки
    	public void DoSomething()
    	{
    		try {
    			// какой-то блок, в котором можем получить ошибку
    		}
    		catch (Exception e)
    		{
    			this._notification.Notify("А у нас тут ошибка!");
    		}
    	}
    }


    Теперь можно создавать экземпляры этого класса, передавая ему желаемый тип оповещения:
    var maybeErrorEmail = new MaybeErrorClass(new EmailNotification());
    var maybeErrorSms = new MaybeErrorClass(new SmsNotification());


    Теперь вопрос на засыпку: как бы вы решили подобную задачу без интерфейсов?

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

    customtema
    @customtema
    arint.ru
    1. Проектировать решения, прежде чем писать код. Цветными фломастерами в тетрадке. Записывать микроТЗ, прежде чем писать код. В тетрадку или в любой текстовый редактор. Вообще, код написать просто, вы в курсе, да? Придумать, что написать - это другой вопрос.
    2. Использовать личный список задач, вне зависимости от того, что используют коллеги. Если требуют использовать корпоративный - используйте его и личный. Любой таск-менеджер, а еще лучше - записывать даже самые мелкие задачи в тетрадку и вычеркивать при изменении статуса цветным фломастером.
    3. Работать ритмично. N минут работы, M минут отдыха, где N от 20 до 90, M от 5 до 20.
    4. Заняться физкультурой. Обязательно каждый день гулять. Здоровое питание, полный отказ от алгоколя и кофе, принимать витамины курсами.
    5. На работе заниматься только работой. Не на работе работой не заниматься. Можно завести два телефона (или двухсимочный телефон) и отключать симки, в зависимости от времени дня и других факторов. Не использовать мессенджеры, скайп, джаббер, аську и т.д. Не отвлекаться на соцсети и т.д.


    Эти простые вещи помогли мне увеличить продуктивность примерно в десять раз.

    И да, вы используете VCS и фреймворки?
    Ответ написан
    3 комментария