Information
- Rating
- 4,874-th
- Location
- Москва, Москва и Московская обл., Россия
- Registered
- Activity
Specialization
Chief Technology Officer (CTO), Project Director
Lead
People management
Development management
Building a team
Company management
Development of tech specifications
Project planning
IT service management
Startup management
И я что-то не увидел транзакции — ни в коде, ни в обсуждении. Интересно, как там дело с ACID?
Кратко, enum — это перечисление заведомо известных констант, строковых, числовых или объектных. Как-то так:
public static class Proprtions {
public const string AUTO = «auto»;
public const string BY_HEIGHT = «height»;
public const string BY_WIDTH = «width»;
}
После чего в коде не нужно писать строки, а можно явно указывать, что вы имели в виду: например, Proportions.AUTO. Помимо избавления от синтаксических ошибок, это позволяет более логично писать код — например, ничто не мешает объявить еще одну константу DEFAULT и сделать ее равной AUTO. Код будет содержать больше логики, и меньше деталей реализации.
Про exceptions — советую почитать не только дискуссии на Хабре, но вам виднее.
Класс events вы не очень удачно назвали — стоит переименовать его в EventLog, например. Кроме того, так и не понял, зачем вам singleton.
Строки
«if ($highest == 0) {
$this->e->add(6, 'highest:'. $highest. 'px');
return false;
}»
смущают. Зачем нужна склейка с заведомо известным $highest == 0?
Так же хотел узнать — php, кажется, поддерживает обработку исключений, но вы ее почему-то не используете.
Кроме того, стоит использовать enum или их аналоги вместо хардкодных строк-вариантов (например, в $proportion)
Что вы понимаете под архитектурой и почему у вас тут противопоставление? Разве первое не есть хороший фундамент для второго?
«Думаю все, кто использует Asp.net для разработки web-сайтов, прекрасно знают, что в Asp.net имеет встроенное кеширование UserControl`ов.»
Речь идет об output (fragment) cache. HttpContext.Current.Cache сюда не относится.
Кроме того, для precompiled app заменяй-не заменяй, приложение не отреагирует, если не перезагрузить домен приложения (например, обновлением web.config), а при выгрузке домена — свалится output кэш.
Для не-precompiled перезапись файла исходника также вызовет перезагрузку домена приложения — кэш теряется.
Не думаю, что это значительно влияет на производительность
>> не происходит обращение к базе даных
Имхо это плохо спроектированные контролы, если они ходят в БД, а не в кэш данных.
>>логика тут вынесена в базовый контрол
Я не про сложность добавления. Именно поэтому смешивается логика и данные: реализация двух методов заставляет каждый ваш контрол знать про кэш, про файлы и все остальное.
Вдобавок, своим решением вы сами себе поставили еще одну проблему — проблему очистки кеша. Она не сложная, однако — «нет кэш-файлов, нет проблем» )
Собстно, я не «наезжаю», просто хочу сказать, что в крупном проекте наличие такого решения, как ваше — борьба со следствием «тормозов» сайта, а не причиной; костыли для архитектуры, так сказать.
Я так понял, основная мысль в этом была )
А вы не в курсе, случайно, что это даст пользователям? Потому что имхо серьезные ошибки на шине связи — это нештатный режим однозначно, а в нем вряд ли кто-то планирует работать.