Мой выбор названий классов затруднен проблемами с максимальной длиной пути Windows XP с SVN / Domain Driven Design - любые решения - PullRequest
1 голос
/ 19 июля 2010

Я использую PHP 5.2 для создания веб-сайта

Мне нравится иметь явные имена для моих классов

У меня также есть соглашение, согласно которому "путь и имя файла" совпадают«имя класса»

Так что класс с именем:

ABCSiteCore_Ctrlrs_DataTransfer_ImportMergeController

будет находиться в моей рабочей копии SVN по адресу:

C:\_my\websrv\ABCCoUkHosting2\webserve\my_library\vendor\ABCSiteCore-6-2\ABCSiteCore\Ctrlrs\DataTransfer\ImportMergeController.php

Iсоглашение об именах дает мне лучшее представление о моей кодовой базе, что позволяет лучше понять и уменьшить чувство сложности.

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

Если путь слишком длинный, я не могу его проверить - проверка не удалась.

Так что я беру целую вечность, чтобы придумать имя для концепции домена.

Я мог бы хотеть назвать класс «служба уведомлений», но в итоге я назвал его чем-то вроде «NtfctnSrvce».Это также вызывает проблемы, когда я пытаюсь создать класс спецификации.

скажем, например, я бы хотел, чтобы класс спецификации вызывался с явным именем, скажем:

$hasBeenNotifiedSpec = new ABCSiteCore_Model_MssgSys_Rules_Customers_HasCustomerBeenSentNotificationOfOnlineTransactionPaymentByEmail($notificationLog);

if($hasBeenNotifiedSpec->isSatisfiedBy($customer))
 {
 ...do something

используя мое соглашение о присвоении имен файлам-классам, я могу просто использовать Windows Explorer, чтобы получить хорошее представление о том, что делает класс, его место / роль в шаблоне Модель / Представление / Контроллер и т. д.

        ABCSiteCore\
         Model\
          MssgSys\
           Rules\
            Customer\
             HasCustomerBeenSentNotificationOfOnlineTransactionPaymentByEmail.php

Всякий раз, когда я думаю об имени для концепции домена, у меня появляется привычка вставлять потенциальную длину пути в « средство проверки длины пути », чтобы посмотреть, смогу ли я его использовать - это просто кусочекпредварительно отформатированного текста в моей рабочей заметки-вики:

Как вы можете видеть.К сожалению, это имя класса приближается к пределам

C:\_my\websrv\ABCCoUkHosting2\webserve\my_library\vendor\ABCSiteCore-6-2\ABCSiteCore\Model\MssgSys\Rules\Customer\hasCustomerBeenSentNotificationOfOnlineTransactionPaymentByEmail.php

-------------------------------------------------------------------------------------------------------------------------------------------------------------------script path length danger zone------->|

----------------------------------------------------------------------------------------------------------------------------------------------------------------------max path length danger zone (inclusive .svn folder)------->|

C:\_my\websrv\ABCCoUkHosting2\webserve\my_library\vendor\ABCSiteCore-6-2\ABCSiteCore\Model\MssgSys\Rules\Customer\.svn\text-base\hasCustomerBeenSentNotificationOfOnlineTransactionPaymentByEmail.php.svn-base

Из-за этих ограничений длины пути я склонен выбирать имена для своих сущностей, которые не в наибольшей степени соответствуют вездесущему языку моей доменной модели.Это может иногда приводить к неправильным представлениям о том, как работает система, вызывать путаницу и усложнять процесс разработки.

так:

  • Как решить эту проблему?
  • это разрешимо или это только одно из тех практических ограничений, с которыми нам всем просто приходится иметь дело?
  • это просто ПК?Возможно, пришло время переключиться на Mac или Linux.

Ответы [ 2 ]

4 голосов
/ 19 июля 2010

Вот несколько абстрактных советов, которые могут вам помочь;да переключайте операционные системы, но не так, как вы думаете - получите virtualbox и загрузите версию linux (хорошая и быстрая + хорошая поддержка ubuntu), а затем используйте эту виртуальную операционную систему в качестве операционной системы разработки - так вы получителучший из обоих миров, и когда вы закончите работу, вы просто закроете виртуальную машину (сохраните ее состояние, если хотите) и получите хороший чистый компьютер, чтобы делать то, что вы хотите.

Преимущества практически не ограниченыНапример, у меня есть несколько виртуальных машин, которые я могу загрузить всякий раз, когда некоторые тестируют настройки, некоторые зеркалируют настройки веб-сервера, у меня даже есть разные версии окон (например, старая XP с IE6) для тестирования ошибок браузера.

Удивительно, но я обнаружил, что моя машина работает быстрее с использованием virtualbox;и, пожалуйста, не тратьте время на настройку и запуск, так как virtualbox очень быстр, и вы обнаружите, что ваши виртуальные машины загружаются намного быстрее, чем ваша основная операционная система.

Есть много других преимуществ, которыедавай, но в целом это очень освобождающий опыт:)

0 голосов
/ 07 июня 2011

Причина на самом деле упоминается здесь: http://svn.haxx.se/users/archive-2005-02/1088.shtml

Суть в том, что если вы используете абсолютные пути для своих операций, вы получаете доступ к 32 КБ длины пути.Относительные пути ограничены ~ 255.

Библиотеки Subversion используют относительные пути.(Я ненавижу это, всегда имею, но это битва, которую мне некогда вести.) Тем не менее, если вы подпитываете Subversion абсолютным путем, ну, пути относительно абсолютного пути все равно сами по себе абсолютны, так что вы должно быть в порядке.Кроме того, если вы используете TortoiseSVN в Windows, у вас все будет в порядке, потому что он всегда передает абсолютные пути Subversion.

Довольно неловко из-за того, что называется ОС, если вы спросите меня.Обходной путь: используйте черепаху SVN.Однако, с другой стороны, я не люблю черепаху, потому что она такая медленная.

...