Во-первых, я на 100% в пользу соглашений и всей команды. Тем не менее, я рассматриваю рамки (в основном различные PHP, но также Ruby on Rails и другие), которые в значительной степени обеспечивают кодирование по соглашению. На первый взгляд это кажется отличной вещью, поэтому URL-адреса напрямую переводится на /controller/action
. Модели называются после таблиц DB, и система точно знает, где загрузить все файлы с помощью действительно простого автозагрузчика.Выполняет ли кодирование по правилам гибкость?
Однако мы используем платформу с белой этикеткой, и то, что работает для большинства клиентов, не обязательно работает для других. Некоторым может потребоваться определенный шаблон URL, поэтому нам нужно настроить маршруты. Некоторым может потребоваться, чтобы страницы имели совершенно другой формат для других клиентов, поэтому мы получаем автозагрузчик, который всегда проверяет, существуют ли версии файлов, специфичные для конкретной зоны, и при необходимости отбрасываются по умолчанию. Это делает разработку ДЕЙСТВИТЕЛЬНО легкой для нас, потому что мы просто бросаем файл с соответствующим именем и размещаем его на месте. Но поскольку это меньшинство случаев, когда это требуется, мы обнаруживаем, что автозагрузчик тратит чрезмерное количество времени на проверку файлов, которые почти гарантированно будут отсутствовать.
Чтобы немного улучшить ситуацию, я рассматривал возможность добавления конфигурации по соглашению, поэтому зоны, которые отклоняются от нормы, найдут нужный переопределяет в файле конфигурации и просто перейдет прямо к нужному файлу, удалив все из существующих проверок файлов, которые я собираю, не очень эффективен (особенно, когда на некоторых страницах требуется сотни вызовов автозагрузчика). По-моему, мы по-прежнему будем использовать соглашение по умолчанию, но при необходимости конфигурируем его.
Я заинтересован, чтобы понять, является ли это непрактично или даже рекомендуемым решением
Кэширование «скомпилированного» класса автозагрузчика/карты файлов может устранить многие из этих проверок файлов; хотя это может иметь последствия для «горячих» изменений в файлах –
Действительно. Мы уже кэшируем много информации, и это может быть болью, когда что-то обновляется, нужно очищать кеши. Но переопределения автозагрузчиков редко меняются, так что это, вероятно, имеет смысл. –
Конечно, в живой производственной среде они редко должны меняться, и именно здесь наиболее важны преимущества производительности: в разработке вы можете настроить автозагрузчик для создания такого кеша, как хорошо, но для этого требуется дополнительный шаг, чтобы проверить, был ли добавлен новый файл переопределения, но он все еще может использовать кеш, поскольку резервная политика –