Тем более, что оно не справилось со своей задачей. «Высшее образование не должно быть массовым

Этому чемпионату, на котором, кажется, уже случилось все, что не могло случиться - я имею в виду турнирную интригу, - на финише не хватало чего-то завершающего. Не сенсации - это слово по ходу затерлось по причине слишком частого употребления. А чего-то вообще невообразимого в виде финала Бельгия - Хорватия. Бельгийцы подвели. А хорваты вышли в финал. И это будет вспоминаться через годы: «Это тот чемпионат мира, на котором в финале играла сборная Хорватии!» Ничего такого не было 50 с лишним лет. И не должно было быть.

Начиная с ЧМ-1966, который у нас впервые показывали по телевидению и который в первый и последний раз выиграли родоначальники футбола, никакого «второго эшелона» в финале быть не могло в принципе. Венгрия в 1954-м, Швеция в 1958-м, Чехословакия в 1962-м. Дальше в финал в разные годы выходили и побеждали исключительно монстры: Бразилия, Италия, Германия, Аргентина, Франция. Плюс вечный неудачник Голландия и впервые прорвавшаяся к столу только в 2010-м Испания, что сенсацией не стало. И все! И больше — ни-ко-го!

Футбольных стран хватает, футбольных держав чуть больше, чем пальцев на одной руке. На континентальных чемпионатах — пожалуйста, резвитесь хоть Мексика с Чили, хоть Дания-Греция-Португалия. Но на планетарном футбольном форуме ни-ни.

И не хорватам по всему было ломать традицию. Да, не попали в Россию Италия с Голландией, но когорта грандов выглядела достаточно мощно. Одного из них хорваты вынесли еще в группе, камня на камне не оставив на Аргентине. Но мало ли кого раньше называли теневым фаворитом и кто их с ходу вспомнит? Кубковый раунд подопечные Златко Далича начали и продолжили со скрипом, одержав победы над сборными Дании и России в серии пенальти. Два подряд матча по 120 с лишним минут изнурительной борьбы для возрастной команды — почти приговор. С сеткой, конечно, повезло — но не с Англией.

Вот кто был голоден, жаден и самое главное — свеж. Вот кто наверняка помнил, что именно немотивированная Хорватия лишила Англию участия в Евро-2008, открыв дорогу России.

Все завязалось в лужниковском полуфинале в тугой узел, и почти все козыри были на руках у Гарета Саутгейта. Почти все, кроме одного, — опыта, о чем человек в строгой жилетке не уставал напоминать уже после того, как все закончилось.

По сути, закончилось тем, что после гола Марио Манджукича обезумевшие от счастья хорватские футболисты за кромкой поля чуть не задавили сальвадорского фотографа. Когда прозвучал финальный свисток турецкого судьи Джюнайта Чакыра, часы готовились отбить полночь. Небо над бурлящей чашей Большой спортивной арены давно было темным, почти черным. Но для победителей на нем сияли звезды.

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

Тучу прогнал шум трибун. Место досталось хорошее, где-то на среднем уровне. Оттуда хорошо было видно, как ребята в белом электричками носятся мимо платформ. Платформами были хорватские игроки. Казалось, что им дается с трудом каждое движение. Они элементарно не успевали за лихими атаками. Никто не успевал. Многоопытный Лука Модрич завалил Деле Алли, который выше его на голову, на границе штрафной площади в самом начале матча. Выполняющий все штрафные Киран Триппьер из «Тоттенхэма» запустил мяч над стенкой, Деян Ловрен из «Ливерпуля» чуть не допрыгнул, у вратаря Даниэля Субашича не осталось шансов. Английская торсида издала клич восторга и запела по-настоящему, что периодически прерывалось вздохом разочарования.

Было от чего. Капитан Гарри Кейн с метра угодил в штангу и запорол момент, который может возглавить любой хит-парад курьезов. Джесси Лингард аккуратно и без помех укладывал мяч в правый от голкипера угол, но промахнулся. Подходов было не счесть. Хорваты упирались как могли, но выглядели обреченными. С трибун свистели.

Не всем — «Лужники» сборную Хорватии как раз поддерживали куда больше, чем англичан. Свист адресовался конкретному игроку. Не англичане свистели, и тем более не китайцы. Хозяева отличались, россияне, о чьем радушии и не устают кричать на всех телеканалах. Мишенью стал защитник Домагой Вида. Мало того что он забил второй, едва не ставший решающим, мяч в ворота Игоря Акинфеева. Он после матча вместе с членом хорватской делегации Огненом Вукоевичем еще и сделал достоянием интернета ролик, в котором было больше глупости, чем крамолы.

На «Слава Украине!» наши пропагандисты накинулись как на красную тряпку. Уже и ФИФА наказала штрафников, уже и сами хорваты лишили аккредитации Вукоевича, уже и сам Вида извинился, уже и болельщики растянули чуть ли не на два сектора полотнище со словами благодарности России.

Но Виду не поняли и не простили, проявив даже большую, чем игравший в киевском «Динамо» футболист, зависимость от политики.

Вида ухом не повел. Хорваты выстояли. Англичанам стоило насторожиться. Но они вышли на второй тайм, явно собираясь играть по счету. Раньше это у них получалось — Саутгейт многому научил свою молодую и не слишком искушенную команду. Однако на этот раз против них были хорваты, которые дважды проигрывали соперникам по ходу матча в кубковом раунде — и дважды побеждали. Бойцы и мастера, которые никогда не сдаются. Они же без замен играли, вплоть до начала дополнительного времени — факт для такого матча невероятный.


Вида с сыном празднуют выход в финал. Фото: Влад Докшин / «Новая газета»

Короче, стреножили хорваты английскую легкую кавалерию. Взяли мяч и территорию. Принялись методично осаждать штрафную и не просто тревожили Джордана Пикфорда, а устроили в его владениях настоящий пожар. Иван Перишич забил, в жестком стыке опередив Кайла Уокера после простейшего навеса Шиме Врсалько. В следующем эпизоде ворота Пикфорда спасла только штанга — бил тот же Перишич. Кое-как выровнять игру сборной Англии удалось только к концу основного времени.

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

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

Саутгейт на пресс-конференции будет в основном говорить о том же, о чем говорят после победного поражения сборной России: о прогрессе команды и полученном ею опыте. И меньше всего — об утешительном финале в Санкт-Петербурге с бельгийцами.

Фраза «на месте хорватов должна была оказаться сборная России» не подходит. Могла, но не оказалась. И точка.

Да, а как же полуфинал Франция — Бельгия? Как же несостоявшийся триумф самой зрелищной сборной чемпионата? Почему же не получилось у блистательного трио Азар — де Брейне — Лукаку?

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

Перед воскресеньем все за французов. Абсолютно все. Но вишенка на торте уже есть. Вы знаете, как она называется.

Оргкомитет обращает внимание на правильность оформления заявок и статей. При несоответствии правилам оформления оргкомитет конференции оставляет за собой право отослать назад автору его материалы для исправления выявленных ошибок.

Единый формат оформления пристатейных библиографических ссылок в соответствии с ГОСТ Р 7.0.5 2008 «Библиографическая ссылка»

(Примеры оформления ссылок и пристатейных списков литературы)

Статьи из журналов и сборников:

Адорно Т. В. К логике социальных наук // Вопр. философии. - 1992. - № 10. - С. 76-86.

Crawford P. J. The reference librarian and the business professor: a strategic alliance that works / P. J. Crawford, T. P. Barrett// Ref. Libr. - 1997. Vol. 3, № 58. - P. 75-85.

Crawford P.J., Barrett Т. P. The reference librarian and the business professor: a strategic alliance that works // Ref. Libr. 1997. Vol. 3. № 58. P. 75-85.

Корнилов В.И. Турбулентный пограничный слой на теле вращения при периодическом вдуве/отсосе // Теплофизика и аэромеханика. - 2006. - Т. 13, №. 3. - С. 369-385.

Кузнецов А. Ю. Консорциум - механизм организации подписки на электронные ресурсы // Российский фонд фундаментальных исследований: десять лет служения российской науке. - М.: Науч. мир, 2003. - С. 340-342.

Тарасова В. И. Политическая история Латинской Америки: учеб. для вузов. - 2-е изд. - М.: Проспект, 2006. - С. 305-412

Допускается предписанный знак точку и тире, разделяющий области библиографического описания, заменять точкой.

Философия культуры и философия науки: проблемы и гипотезы: межвуз. сб. науч. тр. / Сарат. гос. ун-т; [под ред. С. Ф. Мартыновича]. Саратов: Изд-во Сарат. ун-та, 1999. - 199 с.

Допускается не использовать квадратные скобки для сведений, заимствованных не из предписанного источника информации.

Райзберг Б. А. Современный экономический словарь / Б. А. Райзберг, Л. UJ. Лозовский, Е. Б. Стародубцева. -5-е изд., перераб. и доп. - М.:ИНФРА-М, 2006. - 494 с.

Райзберг Б. А., Лозовский Л. Ш., Стародубцева Е. Б. Современный экономический словарь. 5-е изд., перераб. и доп. М.: ИНФРА-М, 2006. 494 с.

Глухов В.А. Исследование, разработка и построение системы электронной доставки документов в библиотеке: Автореф. дис. канд. техн. наук. - Новосибирск, 2000. - 18 с.

Диссертации

Фенухин В. И. Этнополитические конфликты в современной России: на примере Северокавказского региона: дис.... канд. полит, наук. - М.. 2002. - С. 54-55.

Аналитические обзоры:

Экономика и политика России и государств ближнего зарубежья: аналит. обзор, апр. 2007/ Рос. акад. наук, Ин-т мировой экономики и междунар. отношений. - М. : ИМЭМО, 2007. - 39 с.

Патенты:

Патент РФ № 2000130511/28, 04.12.2000.

Еськов Д.Н., Бонштедт Б.Э., Корешев С.Н., Лебедева Г.И., Серегин А.Г. Оптико-электронный аппарат//Патент России № 2122745.1998. Бюл. № 33.

Материалы конференций

Археология: история и перспективы: сб. ст. Первой межрегион, конф.. Ярославль, 2003. 350 с.

Марьинских Д.М. Разработка ландшафтного плана как необходимое условие устойчивого развития города (на примере Тюмени) // Экология ландшафта и планирование землепользования: тезисы докл. Всерос. конф. (Иркутск, 11-12 сент. 2000 г.). - Новосибирск, 2000. - С.125-128.

Интернет-документы:

Официальные периодические издания: электронный путеводитель / Рос. нац. б-ка, Центр правовой информации. [СПб.], 20052007. URL: http://www.nlr.ru/lawcenter/izd/index.html (дата обращения: 18.01.2007).

Логинова Л. Г. Сущность результата дополнительного образования детей // Образование: исследовано в мире: междунар. науч. пед. интернет-журн. 21.10.03. URL: http://www.oim.ru/reader.asp7nomers 366 (дата обращения: 17.04.07).

Рынок тренингов Новосибирска: своя игра [Электронный ресурс]. - Режим доступа: http://nsk.adme.ru/news/2006/07/03/2121 .html (дата обращения: 17.10.08).

Литчфорд Е. У. С Белой Армией по Сибири [Электронный ресурс] // Восточный фронт Армии Генерала А. В. Колчака: сайт. - URL: http://east-front.narod.ru/memo/latchford.htm (дата обращения 23.08.2007).

Монографи

ГОСТ 25328-82

Группа Ж12

МЕЖГОСУДАРСТВЕННЫЙ СТАНДАРТ

ЦЕМЕНТ ДЛЯ СТРОИТЕЛЬНЫХ РАСТВОРОВ

Технические условия

Masonry cement. Specifications

МКС 91.100.10
ОКП 57 3811

Дата введения 1983-01-01

ИНФОРМАЦИОННЫЕ ДАННЫЕ

1. РАЗРАБОТАН И ВНЕСЕН Министерством промышленности строительных материалов СССР

2. УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Государственного комитета СССР по делам строительства от 09.04.82 N 93

3. ВВЕДЕН ВПЕРВЫЕ

4. ССЫЛОЧНЫЕ НОРМАТИВНО-ТЕХНИЧЕСКИЕ ДОКУМЕНТЫ

Номер пункта

2.1, 4.1, 6.1

5. ПЕРЕИЗДАНИЕ. Декабрь 2003 г.

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

1. ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ

1. ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ

1.1. Цемент должен изготовляться в соответствии с требованиями настоящего стандарта по технологическим регламентам, утвержденным в установленном порядке.

1.2. Цемент для строительства растворов - продукт, получаемый путем совместного измельчения портландцементного клинкера, гипса, активных минеральных добавок и добавок-наполнителей.

1.3. Материалы, применяемые для изготовления цемента, должны соответствовать требованиям, предусмотренным в стандартах или технических условиях на эти материалы.

1.4. Добавки

1.4.1. Активные минеральные добавки - по нормативно-технической документации (НТД).

Гранулированные доменные или электротермофосфорные шлаки - по ГОСТ 3476 .

1.4.2. Добавки-наполнители

Кварцевый песок с содержанием оксида кремния не менее 90%. Содержание глинистых, илистых и мелких пылевидных фракций величиной менее 0,05 мм не должно быть более 3%.

Кристаллический известняк, мрамор и пыль электрофильтров клинкерообжигательных печей - по НТД.

1.5. Гипсовый камень - по ГОСТ 4013 . Допускается применять фосфо- и борогипс по НТД.

1.7. Допускается вводить в цемент пластифицирующие или гидрофобизирующие добавки, улучшающие качество цемента. Количество пластифицирующих добавок должно быть не более 0,5%, а гидрофобизирующих - не более 0,3% массы цемента.

1.8. Допускается вводить в цемент воздухововлекающие добавки в количестве до 1% массы цемента.

1.9. При изготовлении цемента для интенсификации процесса помола допускается вводить технологические добавки, не ухудшающие качества цемента, в количестве не более 1% массы цемента.

1.10. Предел прочности цемента при сжатии в 28-суточном возрасте должен быть не менее 19,6 МПа (200 кгс/см).

1.11. Начало схватывания цемента должно наступать не ранее 45 мин, а конец - не позднее 12 ч от начала затворения.

1.12. Водоотделение цементного теста, изготовленного при В/Ц=1,0, не должно быть более 30% по объему.

1.13. Образцы из цемента должны проявлять равномерность изменения объема при испытании их кипячением в воде.

1.14. Тонкость помола цемента должна быть такой, чтобы при просеивании через сито N 008 по ГОСТ 6613 проходило не менее 88% массы просеиваемой пробы.

1.15. Содержание ангидрида серной кислоты в цементе должно быть не менее 1,5 и не более 3,5% массы цемента.

2. ПРАВИЛА ПРИЕМКИ

2.1. Правила приемки цемента - по ГОСТ 30515 .

3. МЕТОДЫ ИСПЫТАНИЙ

3.1. Химический состав цемента определяют по ГОСТ 5382 .

3.2. Физико-механические свойства цемента определяют по ГОСТ 310.1 -ГОСТ 310.6 .

3.4. Водоотделение цемента определяют по следующей методике.

3.4.1. Аппаратура

Фарфоровый стакан вместимостью 1 л.

Металлический шпатель.

Технические весы.

Градуированный цилиндр вместимостью 500 мл.

3.4.2. Проведение испытаний

Отвешивают 350 г цемента и 350 г воды с точностью до 1 г. Воду выливают в фарфоровый стакан, затем в стакан в течение 1 мин высыпают навеску цемента, непрерывно перемешивая содержимое металлическим шпателем. Полученное цементное тесто перемешивают еще 4 мин и осторожно переливают в градуированный цилиндр. Цилиндр с цементным тестом ставят на стол и тотчас же отсчитывают объем цементного теста. Во время опыта цилиндр должен стоять неподвижно и не подвергаться толчкам и встряхиваниям.

Объем осевшего цементного теста отмечают через 4 ч после первого отсчета.

Коэффициент водоотделения (объемный) в процентах вычисляют по формуле

где - первоначальный объем цементного теста, см;

- объем осевшего цементного теста, см.

4. УПАКОВКА, МАРКИРОВКА, ТРАНСПОРТИРОВАНИЕ И ХРАНЕНИЕ

4.1. Упаковку, маркировку, транспортирование и хранение цемента осуществляют по ГОСТ 30515 .

5. УКАЗАНИЕ ПО ПРИМЕНЕНИЮ

5.1. Цемент должен применяться в соответствии с Инструкцией по приготовлению и применению строительных растворов, утвержденной Госстроем.

В связи с замедленным твердением при низких температурах этот цемент следует использовать, как правило, при температуре окружающей среды не ниже 10 °С.

6. ГАРАНТИИ ИЗГОТОВИТЕЛЯ

6.1. Предприятие-изготовитель гарантирует соответствие цемента всем требованиям настоящего стандарта в течение месяца при условии соблюдения его транспортирования и согласно требованиям ГОСТ 30515 .


Электронный текст документа
подготовлен ЗАО "Кодекс" и сверен по:
официальное издание
М.: ИПК Издательство стандартов, 2004

Формулировка: не должно быть больше одной причины для изменения класса

Что является причиной изменения логики работы класса? Видимо, изменение отношений между классами, введение новых требований или отмена старых. Вообще, вопрос о причине этих изменений лежит в плоскости ответвенности, которую мы возложили на наш класс. Если у объекта много ответвенности, то и меняться он будет очень часто. Таким образом, если класс имеет больше одной ответственности, то это ведет к хрупкости дизайна и ошибкам в неожиданных местах при изменениях кода.

Примеры

Сценариев, где можно встретить нарушение этого принципа очень много. Я выбрал несколько самых популярных. Примеры будут приводиться с обозначением ошибки в дизайне, после чего будет приведено решение проблемы.

1. Active Record

Проблема

Совсем недавно в качестве ORM я использовал MyGeneration . Суть этой ORM состоит в том, что по таблицам базы данных, она генерирует бизнес-сущности. Возьмем для примера сущность пользователя - Account . Сценарий использования выглядит так:

// создание пользователя Accounts account = new Accounts(); account.AddNew(); account.Name = "Name"; account.Save(); // загрузка объекта по Id Accounts account = new Accounts() account.LoadByPrimaryKey(1); // загрузка связной коллекции при обращении к свойству объекта var list = account.Roles;

Шаблон Active Record может быть успешно использован в небольших проектах с простой бизнес-логикой. Практика показывает, что когда проект разрастается, то из-за смешанной логики внутри доменных объектов возникает много дублирования в коде и непредвиденных ошибок. Обращения к базе данных довольно сложно проследить, когда они скрыты, например, за свойством объекта account.Roles .

В данном случае объект Account имеет несколько ответственностей:

  1. является объектом домена и хранит бизнес-правила, например, связь с коллекцией ролей
  2. является точкой доступа к базе данных

Решение

Простым и действенным выходом является использование шаблона Repository . Хранилищу AccountRepository мы оставляем работу с базой данных и получаем «чистый» доменный объект.

// создание пользователя var account = new Account(); account.Name = "Name"; accountRepository.Save(account); // загрузка пользователя по Id var account = accountRepository.GetById(1); // загрузка со связной коллекцией // пример из LLBLGen Pro var account = accountRepository.GetById(1, new IPath{new Path(Account.PrefetchPathRoles)});

2. Валидация данных

Проблема

Если вы сделали хотя бы один проект, то перед вами наверняка стояла проблема валидации данных. Например, проверка введенного адреса эл. почты, длины имени пользователя, сложности пароля и т.п. Для валидации объекта резонно возникает первая реализация:

Public class Product { public int Price { get; set; } public bool IsValid() { return Price > 0; } } // проверка на валидность var product = new Product { Price = 100 }; var isValid = product.IsValid();

Такой подход является вполне оправданным в данном случае. Код простой, тестированию поддается, дублирования логики нет.

Теперь наш объект Product начал использовать в некоем CustomerService , который считает валидным продукт с ценой больше 100 тыс. рублей. Что делать? Уже сейчас понятно, что нам придется изменять наш объект продукта, например, таким образом:

Public class Product { public int Price { get; set; } public bool IsValid(bool isCustomerService) { if (isCustomerService == true) return Price > 100000; return Price > 0; } } // используем объект продукта в новом сервисе var product = new Product { Price = 100 }; var isValid = product.IsValid(true);

Решение

Стало очевидно, что при дальнейшем использовании объекта Product логика валидации его данных будет изменяться и усложняться. Видимо пора отдать ответственность за валидацию данных продукта другому объекту. Причем надо сделать так, чтобы сам объект продукта не зависел от конкретной реализации его валидатора. Получаем код:

Public interface IProductValidator { bool IsValid(Product product); } public class ProductDefaultValidator: IProductValidator { public bool IsValid(Product product) { return product.Price > 0; } } public class CustomerServiceProductValidator: IProductValidator { public bool IsValid(Product product) { return product.Price > 100000; } } public class Product { private readonly IProductValidator validator; public Product() : this(new ProductDefaultValidator()) { } public Product(IProductValidator validator) { this.validator = validator; } public int Price { get; set; } public bool IsValid() { return validator.IsValid(this); } } // обычное использование var product = new Product { Price = 100 }; // используем объект продукта в новом сервисе var product = new Product (new CustomerServiceProductValidator()) { Price = 100 };

Имеем объект Product отдельно, а любое количество всяческих валидаторов отдельно.

В дополнение хочу посоветовать книгу Применение DDD и шаблонов проектирования. Проблемно-ориентированное проектирование приложений с примерами на C# и.NET . В ней очень подробно рассмотрен вопрос валидации данных.

3. God object

Проблема

Предел нарушения принципа единственности ответственности – God object . Этот объект знает и умеет делать все, что только можно. Например, он делает запросы к базе данных, к файловой системе, общается по протоколам в сеть и содержить тонну бизнес-логики. В пример приведу объект, который называется ImageHelper :

Public static class ImageHelper { public static void Save(Image image) { // сохранение изображение в файловой системе } public static int DeleteDuplicates() { // удалить из файловой системы все дублирующиеся изображения и вернуть количество удаленных } public static Image SetImageAsAccountPicture(Image image, Account account) { // запрос к базе данных для сохранения ссылки на это изображение для пользователя } public static Image Resize(Image image, int height, int width) { // изменение размеров изображения } public static Image InvertColors(Image image) { // изменить цвета на изображении } public static byte Download(Url imageUrl) { // загрузка битового массива с изображением с помощью HTTP запроса } // и т.п. }

Кажется, что границы ответственности у него вообще нет. Он может сохранять в базу данных, причем знает правила назначения изображений пользователям. Может скачивать изображения. Знает, как хранятся файлы изображений и может работать с файловой системой.

Каждая ответственность этого класса ведет к его потенциальному изменению. Получается, что этот класс будет очень часто менять свое поведение, что затруднит его тестирование и тестирование компонентов, которые его используют. Такой подход снизит работоспособность системы и повысит стоимость ее сопровождения.

Решение

Решением является разделить этот класс по принципу единственности ответственности: один класс на одну ответственность.

Public static class ImageFileManager { public static void Save(Image image) { // сохранение изображение в файловой системе } public static int DeleteDuplicates() { // удалить из файловой системы все дублирующиеся изображения и вернуть количество удаленных } } public static class ImageRepository { public static Image SetImageAsAccountPicture(Image image, Account account) { // запрос к базе данных для сохранения ссылки на это изображение для пользователя } } public static class Graphics { public static Image Resize(Image image, int height, int width) { // изменение размеров изображения } public static Image InvertColors(Image image) { // изменить цвета на изображении } } public static class ImageHttpManager { public static byte Download(Url imageUrl) { // загрузка битового массива с изображением с помощью HTTP запроса } }

Этот пост входит в серию

51 год назад, 8 октября 1967 года, в Великобритании впервые принят закон, регламентирующий содержание алкоголя в крови водителей.

Употребление спиртных напитков для водителей всех видов транспорта опасно - даже незначительное снижение реакции и внимания приводит к росту аварийных ситуаций и числа ДТП со смертельным исходом.

Водители транспорта в состоянии опьянения обратили на себя внимание ещё в XIX столетии.

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

В 1925 году в этот документ было внесено дополнение: «водитель любого механического транспортного средства».

В 1932 году профессор Видмарк (Швеция) впервые разработал устройство для научно обоснованного определения алкоголя в крови. Этот год следует считать началом эры анализа крови водителей на алкоголь.

В 1935 году Британская медицинская ассоциация опубликовала результаты исследования «Дорожные аварии, связанные с алкоголем». В 1936 году начинается широкая кампания по внедрению научно обоснованного метода анализа крови на алкоголь. В 1939 году комитет палаты лордов рекомендует внедрить этот анализ для контроля водителей, но исключительно на добровольных началах.

В 1966 году предпринята первая попытка провести через парламент закон, регламентирующий содержание этанола в крови: 0,8 промилле как гранично-допустимый уровень и максимальную скорость - 70 миль/час. Превышение этих показателей должно было рассматриваться как серьёзное нарушение.

8 октября 1967 года закон был принят. Последствия были впечатляющими: количество смертей на дорогах Англии снизилось практически в два раза.