Jump to content

Предпосылка приоритета трансформации

Предпосылка приоритета трансформации ( TPP ) — это подход к программированию, разработанный Робертом К. Мартином (дядя Боб) как усовершенствование, позволяющее сделать процесс разработки через тестирование (TDD) более простым и эффективным для программиста.

Предпосылка приоритета трансформации гласит, что следует отдавать предпочтение более простым преобразованиям:

[...] У рефакторинга есть аналоги, называемые трансформациями . Рефакторинг — это простые операции, которые изменяют структуру кода, не меняя его поведения. Преобразования — это простые операции, изменяющие поведение кода. Преобразования могут использоваться как единственное средство для прохождения текущего провального теста в red/green/refactor цикл. Преобразования имеют приоритет или предпочтительный порядок, который, если поддерживать его путем упорядочения тестов, предотвратит тупики или длительные простои в работе. red/green/refactor цикл.

- «Дядя Боб» Мартин , «Приоритетная предпосылка трансформации», [1] Блог дяди Боба

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

Посылка приоритета трансформации — это название, данное ментальной структуре, которую разработчики TDD создают с течением времени, чтобы сбалансировать ваш код, чтобы он не был слишком конкретным, а не универсальным. Идея состоит в том, что с каждым примером, который вы добавляете в тесты, вы перемещаете список приоритетов преобразования вверх, делая ваш код более универсальным и способным обрабатывать больше случаев. Напротив, ваши тесты с большим количеством примеров становятся все более конкретными и сосредоточенными на проблеме. Итак, вы начинаете с константы для вашего первого теста, для следующего теста вы можете изменить эту константу на «если», а на следующем шаге вы можете ввести цикл. Каждый раз вы продвигаетесь вверх по приоритетному помещению. Целью следования этой структуре является избежание случайных осложнений и добавление только к существенным осложнениям. Каждый шаг — это наименьшее возможное изменение, которое вы можете внести, чтобы реализовать только код, необходимый для реализации примеров, приведенных в тесте.

Билли Томпсон, Предпосылка приоритета преобразования — тема дня № 21 в области разработки программного обеспечения [2]

Преобразования [3]

[ редактировать ]
  1. ({} → ноль) вообще нет кода → код, в котором используется ноль
  2. (ноль → константа)
  3. (константа → константа+) от простой константы к более сложной константе
  4. (константа → скаляр) замена константы переменной или аргументом
  5. (утверждение → утверждения), добавляя больше безусловных утверждений.
  6. (безусловное → if) разделение пути выполнения
  7. (скаляр → массив)
  8. (массив → контейнер)
  9. (оператор → хвостовая рекурсия)
  10. (если → пока)
  11. (оператор → нехвостовая рекурсия)
  12. (выражение → функция) замена выражения функцией или алгоритмом
  13. (переменная → присваивание) замена значения переменной.
  14. (case) добавление случая (или еще) к существующему переключателю или если

Дядя Боб также прямо заявил: «Вероятно, есть и другие», [1] и

[Я] думаю, что список приоритетов зависит от языка... Например, в Java мы могли бы переместить (if → while) и (переменная → присваивание) выше (оператор → хвостовая рекурсия) , чтобы итерация всегда была предпочтительнее рекурсии. , и присваивание предпочтительнее передачи параметров... потому что Java не является функциональным языком.

- Роберт Мартин, запись в блоге «Фиб. Предпосылка TP» [3]

Как использовать трансформации на практике

[ редактировать ]

Ридлхувер поясняет, что Преобразования помогают вам выбрать, какие тесты писать и в каком порядке.

[Преобразования] на самом деле могут помочь нам выбрать, какие тесты и в каком порядке следует писать. Например, если мы решим написать тест, который требует от нас добавления оператора if в наш код, этот тест требует преобразования «безусловный -> if». Зная это, мы можем попытаться подумать о других тестах, которые полагаются исключительно на преобразования, расположенные выше в списке. Конечной наградой является то, что, написав наши тесты с использованием порядка приоритетов преобразований, мы никогда не дойдем до точки, когда один тест заставит нас переписать весь метод.

Алан Ридлхувер, «Посылка приоритета трансформации» [4]

Кори Хейнс представляет живую демонстрацию кодирования ( Ката римских цифр ), в которой он решает задачу кодирования с использованием преобразований.

  1. ^ Перейти обратно: а б Мартин, Роберт (2010). «Приоритет трансформации» .
  2. ^ Томпсон, Билли (2021). «Приоритетная предпосылка трансформации» .
  3. ^ Перейти обратно: а б Мартин, Роберт (2010). «Фиб. Предпосылка ТП» .
  4. ^ Ридлхувер, Алан (2011). «Приоритетная предпосылка трансформации» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b3c661d15867c544632bd1a0ebfde107__1708848060
URL1:https://arc.ask3.ru/arc/aa/b3/07/b3c661d15867c544632bd1a0ebfde107.html
Заголовок, (Title) документа по адресу, URL1:
Transformation Priority Premise - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)