Я получил множество отзывов на мою недавнюю серию постов по Poka-yoke проектированию (я был бы расстроены, если было бы иначе). Множество из этих отзывов касаются различных технологий сериализации или трансляции, используемых обычно на границах приложения: сериализация, XML (де)гидратация (прим. переводчика: тоже самое, что и сериализация), UI-валидация и т.д. Заметьте, что такая трансляция происходит не только по периметру приложения, но также и на уровне сохраняемости (persistence). ORM-ы также являются трасляционными механизмами.
Общим для многих комментариев является утверждение о том, что большая часть технологий сериализации требует наличия конструктора по умолчанию. Например, класс XmlSerializer требует наличия конструктора по умолчанию и публичных, доступных для записи свойств. Большая часть объектно-реляционных преобразователей, которые я изучал, похоже, имеют те же требования. Контролы Windows Forms и WPF (UI – также граница приложения) почти обязаны иметь конструктор по умолчанию. Не нарушает ли это инкапсуляцию? И да и нет.
Читать полностью »
Рубрика «best practices» - 5
На границах, приложения не являются объектно-ориентированными
2013-12-06 в 12:05, admin, рубрики: .net, best practices, Mark Seemann, инкапсуляция, Программирование, Совершенный код«Запах» проектирования: конструктор по умолчанию
2013-12-06 в 11:53, admin, рубрики: .net, best practices, Mark Seemann, инкапсуляция, Программирование, Совершенный кодЭто пятый пост из серии о Poka-yoke проектировании – также известном, как инкапсуляция.
Конструкторы по умолчанию являются «запахом» в коде. Именно так. Это может звучать возмутительноЧитать полностью »
«Запах» проектирования: излишний атрибут Required
2013-12-06 в 11:38, admin, рубрики: .net, best practices, Mark Seemann, инкапсуляция, Программирование, Совершенный код, метки: best practices, инкапсуляцияЭто четвёртый пост из серии о Poka-yoke проектировании – также известном, как инкапсуляция.
Недавно, я прочитал из какого-то технологического события Microsoft пост, написанный с энтузиазмом:
Атрибут [Required] в коде автоматически создаёт запись в БД, которая не может принимать null, а также создаёт валидацию на веб-странице – симпотично […]
«Запах» проектирования: одержимость примитивами
2013-12-06 в 11:17, admin, рубрики: .net, best practices, Mark Seemann, инкапсуляция, Программирование, Совершенный кодЭто второй пост из серии о Poka-yoke проектировании – также известном, как инкапсуляция.
Множество классов имеют тенденцию к потреблению или раскрытию примитивных значений, таких как int, или string. В то время как такие примитивы существуют на любой платформе, их использование может приводить к процедурному коду. Более того, они обычно нарушают инкапсуляцию, допуская присвоение некорректных значений.
Читать полностью »
«Запах» проектирования: временная связность
2013-12-06 в 11:15, admin, рубрики: .net, best practices, Mark Seemann, инкапсуляция, Программирование, Совершенный код Это первый пост из серии о Poka-yoke проектировании – также известном, как инкапсуляция.
Известной проблемой в проектировании API является временная связность, которая получается в том случае, если в классе присутствуют скрытые отношения между двумя или более членами, требующие от клиента правильной последовательности вызовов. Это жёстко связывает члены класса во временном разрезе.
Читать полностью »
Ключевые показатели качества обслуживания клиентов в ритейле и сфере услуг
2013-12-03 в 8:33, admin, рубрики: best practices, efm-системы, Блог компании ProLAN, качество обслуживания, лояльность клиентов, управление проектами, метки: best practices, efm-системы, качество обслуживания, лояльность клиентов 
Для эффективного управления качеством обслуживания клиентов, кроме метода Тайного Покупателя (Mystery Shopping), позволяющего оценивать обслуживание с точки зрения корпоративных стандартов, не менее важно проводить опрос реальных клиентов. Это можно делать различными способами, например, с использованием веб-опросов, опросов по почте, с привлечением интервьюеров, опрашивающих клиентов в торговом зале. В последнее время активно развивается технология опроса, в основе которой лежит использование специальных кнопочных пультов или терминалов, устанавливаемых непосредственно в точке оформления покупки или получения услуги. Основное преимущество этой технологии в том, что клиент не успевает забыть свои ощущения, поэтому информация о восприятии клиентами качества обслуживания оказывается очень точной. Кроме этого, клиента значительно проще мотивировать ответить на один вопрос в момент оформления покупки, чем на серию вопросов через день или два, когда радость от покупки (или, наоборот, негодование) уже не такие яркие. Если только, конечно, это не панельное исследование, за которое клиент получает вознаграждение. Поэтому представительность выборки, а, следовательно, и достоверность результатов, оказываются значительно выше.
Читать полностью »
Пишем красивый идиоматический Python
2013-12-02 в 18:03, admin, рубрики: best practices, python, Python 2.7, метки: best practices, Python 2.7 
Иногда сложно найти в Сети правильные, а главное актуальные «best practices» для языка. Документация, конечно же, содержит всю необходимую информацию, но отсеять нужную вещь в абзацах подробного (на то она и документация) описания, довольно сложно. Но недавно мне улыбнулся поиск Google, и я наткнулся на очень полезные «паттерны» языка Python от одного из core разработчиков — Raymond Hettinger.
Примечание: Все рекомендации даны в нескольких вариантах: сначала идут самые «плохие» варианты, а дальше предлагается лучшая альтернатива. Актуально для версии языка 2.7, отличия для версии 3.3 читайте в примечаниях к конкретному «паттерну».
Читать полностью »
Мониторинг качества обслуживания. Лучшие практики
2013-11-19 в 12:54, admin, рубрики: best practices, efm, efm-системы, Блог компании ProLAN, оценка качества обслуживания, управление проектами, метки: best practices, efm, efm-системы, оценка качества обслуживания 
Эффективность персонала передней линии – это очень важно. Однако личную эффективность относительно несложно измерить только для работников, занимающихся активными продажами. Обычно это выполнение плана продаж, средний размер чека, реже – конверсия. Для всех остальных работников передней линии (операционисты, кассиры, клиентские менеджеры и т.п.) показателем личной эффективности является удовлетворённость клиентов, которая зависит, в первую очередь, от качества обслуживания. Поэтому, чтобы управлять личной эффективностью работников передней линии, не занимающихся активными продажами, абсолютно необходимо контролировать качество обслуживания клиентов. В дополнение к этому желательно контролировать эмоциональную лояльность клиентов (насколько они в целом удовлетворены приобретёнными товарами или услугами и готовы ли рекомендовать компанию своим знакомым) и уметь быстро диагностировать корневые причины их недовольства и низкой лояльности.
Читать полностью »
Java на каждый день и не только. Рекомендации по использованию
2013-02-25 в 11:03, admin, рубрики: best practices, java, переводы, советы бывалыхВсем привет!
Вашему вниманию предлагается перевод статьи уже известного на Хабре автора. На этот раз он делится своими видением того, как часто нужно применять в своей повседневной разработке те или иные свойства языка Java.

Java — это язык с мощными стандартными возможностями, но «Большая сила налагает большую ответственность». Я видел много java-кода, в котором чрезмерно (и зачастую — неправильно) использовались «редкие» свойства языка, в то время как основы основ были почти полностью проигнорированы. Эти наблюдения и послужили стимулом к написанию статьи.
Это не список обязательных к использованию каждым программистом особенностей языка. Скорее наоборот. Я разделил их на 3 группы: "для каждодневного использования", "для периодического использования" и "только для фреймворков и библиотек!". Правило простое: если вы понимаете, что используете указанные свойства чаще, чем рекомендуется, то, скорее всего, ваш код развивается по неправильному пути. Если же наоборот — вы редко используете какие-то свойства, чем я рекомендую, значит вы упускаете какие-то интересные и важные возможности языка.
Обратите внимание, что я говорю о разработке типичных серверных бизнес-приложений (JVM, JDK, вот это все) и не даю рекомендаций относительно каких бы то ни было фреймворков.
Читать полностью »
Ruby Science: руководство по созданию качественных приложений на Ruby on Rails от thoughtbot
2012-12-13 в 22:29, admin, рубрики: best practices, patterns, ruby, ruby on rails, метки: best practices, patterns, ruby, ruby on railsthoughtbot (с маленькой буквы) — одна из ведущих американских консалтинговых фирм, ориентированных на веб разработку с помощью Ruby on Rails. thoughtbot эксплуатирует распространенную в этой среде бизнес-модель, и зарабатывает не только за счет консалтинга, но и за счет своих больших вкладов в Open Source, активного участия в жизни сообщества (например, подкаст Giant Robots Smashing into Other Giant Robots), образовательной деятельности (воркшопы, менторство), внутренних продуктов и литературы.
На их счету до сегодняшнего дня числилось две полноценных книги: The Playbook — исчерпывающий справочник по внутреннему распорядку и трудовым хитростям thoughtbot (бесплатна для изучения на их сайте), и Backbone.js on Rails — не менее исчерпывающее руководство по использованию JS фреймворка Backbone вместе с Ruby on Rails.
Интересна особенность их подхода к публикации книг. Это не статичный труд, написанный однажды, напечатанный на бумаге и устаревающий с годами, а продукт, поддерживающий версионность, развивающийся под влиянием читателей и сопровождающийся различными электронными плюшками, в том числе и готовым к использованию кодом примеров. «Исходники» книги хранятся на github, а это значит, что в любой момент читатель имеет возможность получить самый свежий релиз, сообщить о проблеме, обсудить какую-либо часть текста и т.п.
Сегодня они объявили о начале работы над новой книгой, под названием «Ruby Science. The reference for writing fantastic Rails applications». Более того, начать чтение книги и принять участие в её развитии можно уже сейчас.

Читать полностью »
