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 )