Я получил множество отзывов на мою недавнюю серию постов по Poka-yoke проектированию (я был бы расстроены, если было бы иначе). Множество из этих отзывов касаются различных технологий сериализации или трансляции, используемых обычно на границах приложения: сериализация, XML (де)гидратация (прим. переводчика: тоже самое, что и сериализация), UI-валидация и т.д. Заметьте, что такая трансляция происходит не только по периметру приложения, но также и на уровне сохраняемости (persistence). ORM-ы также являются трасляционными механизмами.
Общим для многих комментариев является утверждение о том, что большая часть технологий сериализации требует наличия конструктора по умолчанию. Например, класс XmlSerializer требует наличия конструктора по умолчанию и публичных, доступных для записи свойств. Большая часть объектно-реляционных преобразователей, которые я изучал, похоже, имеют те же требования. Контролы Windows Forms и WPF (UI – также граница приложения) почти обязаны иметь конструктор по умолчанию. Не нарушает ли это инкапсуляцию? И да и нет.
Читать полностью »
Рубрика «Mark Seemann»
На границах, приложения не являются объектно-ориентированными
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-03-30 в 10:45, admin, рубрики: best practice, clean code, Mark Seemann, tdd, Программирование, разработка Даже если код тривиален, вы всё равно должны его тестировать.
Пару дней назад, Роберт Мартин опубликовал пост «Прагматичность TDD», (здесь лежит перевод — прим.переводчика) где он рассказал о том, что не тестируют абсолютно весь код. Среди исключительных ситуаций, когда не стоит применять TDD, дядя Боб упоминает написание GUI-кода, и я вижу смысл в таких утверждениях, но среди исключений есть парочка, на мой взгляд, нелогичных. Читать полностью »