1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-lmpythw-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
ex49.md 8.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.03.2025 03:52 f9ec0dd

Упражнение 49: sed

Оригинал: Упражнение 49: sed

Переводчик: Феликс Ло

Лицензия: CC BY-NC-SA 4.0

Гордо использует Google Translate

Когда вы учились создавать быстрый и примитивный черный магический скрипт в упражнении 9, вы реализовали "экономную" версию sed. В этом упражнении вы попробуете реализовать ещё один точный копирующий командный эквивалент. В исследовательском упражнении 48 вашей задачей было создание модуля из вашего реализации ed. Если вы этого не сделали, вам потребуется его сделать для команды sed, и чтобы sed использовала этот модуль.

Какой у вас процесс? Вы заметили, что он помогает вам с этими более длинными проектами? Есть ли что-то, что вы считаете необходимым изменить? Вы собирали метрики или чувствуете, что уже прошли тот этап? Потратите немного времени, начав это упражнение, просмотрите свои журналы и посмотрите, насколько вы улучшились со дня начала чтения этой книги.Вызов этого упражнения состоит в том, чтобы взять код из проекта ed из упражнения 48 и переиспользовать его в этом проекте. Концепция "переиспользования" крайне важна для способа работы программного обеспечения, но часто планы переиспользования в проектах приводят к катастрофе. Люди часто проектируют программное обеспечение таким образом, чтобы каждый компонент мог использоваться в других программах, но при этом они просто усложняют дизайн, не планируя использовать что-либо в любом другом проекте. Лучше всего делать программное обеспечение дискретным и независимым, а затем извлекать части, которые можно использовать, и использовать эти части при запуске нового проекта.Обычно я пишу своё программное обеспечение, не беспокоясь о переиспользовании. Мне всё равно, будут ли части проекта использоваться в других проектах. Я заботлюсь только о том, чтобы эта часть программы работала хорошо и была качественной. Когда я начинаю новый проект, я смотрю на то, что я писал раньше, и смотрю, есть ли что-нибудь, что я могу снова использовать. Если я потрачу время на извлечении модулей из старых проектов, это сделает мой процесс переиспользования таким:

  • Реализовать высококачественное функционально полное программное обеспечение с помощью автоматизированного тестирования, не обращая внимания на любые другие части, используемые в других программах.
  • Создайте новый проект, который может использовать код другого проекта.
  • Вернитесь к первому проекту, переместите код в отдельный модуль, сделайте так, чтобы первый проект использовал этот модуль, и ни в коем случае не изменяйте ничего другого.
  • Используйте этот модуль там, где это необходимо, и как только ваши первоначальные автоматизированные тесты будут работать корректно в исходном проекте, начните использовать этот модуль в новом проекте.
  • Наконец, попробуйте использовать новый модуль в новом проекте, и вы заметите необходимость внесения изменений в модуль. Внесите эти изменения и убедитесь, что они хорошо работают вместе с исходным программным обеспечением.Без автоматизированного тестирования вы не сможете этого сделать, поэтому если в вашем проекте ed отсутствуют тесты, меня интересует, прочли ли вы эту книгу. Вернитесь назад и убедитесь, что ваши тесты полностью покрывают проект ed.## Упражнение

Сначала вам потребуется выделить часть проекта ed, которая занимается обработкой команд, и поместить её в модуль, используемый проектом ed, не нарушив при этом тесты. Честно говоря, это станет одним из самых сложных аспектов всего проекта, поскольку большую часть времени sed просто используют эти модули, не имея модального характера интерфейса проекта ed.

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

Целью данной реализации является создание точной копии команды sed. В этом упражнении нет места для креативности — попросту постарайтесь действовать как можно более внимательно и использовать автоматизированные тесты для подтверждения того, что ваши команды работают так же, как и оригинальный sed.Наконец, когда вы будете работать над sed, вы найдете всё необходимое в модуле. Вам потребуется внести изменения в модуль, чтобы он работал в sed, а затем вернуться к ed и заставить его работать там. Процесс перехода между этими тремя проектами будет представлять собой вызов, поэтому я рекомендую вам продолжать использовать свои блоки времени по 45 минут, чтобы избежать путаницы из-за постоянных контекстных переключений.## Исследовательское обучение

При работе с модулем заметили ли вы какие-либо программистские привычки, делающие выделение кода трудным? Какие именно?

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-lmpythw-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-lmpythw-zh.git
oschina-mirror
wizardforcel-lmpythw-zh
wizardforcel-lmpythw-zh
master