Гибкий Сценарий, который корректен? [закрытый]

Отметьте в Python 2.6 + и Py3K, %f символ ловит микросекунды.

>>> datetime.datetime.strptime("2008-09-03T20:56:35.450686Z", "%Y-%m-%dT%H:%M:%S.%fZ")

Посмотрите выпуск здесь

5
задан Ben Breen 15 July 2009 в 16:24
поделиться

5 ответов

На одном конце спектра находятся сторонники Agile, которые настаивают на том, что все может быть выполнено с помощью рефакторинга позже. На другом конце - толпа олдскульных «Big-Design-Up-Front», которые думают, что вы должны сначала построить полную архитектуру, а затем привязать к ней функции. Ваш вопрос идеален, потому что он вскрывает недостатки обеих философий, если вы бездумно следите за их процессами. Вам нужна максимальная эффективность. Итак, вам нужно проанализировать, что такое история 1 и история 2 в вашей ситуации. Можно ли поставлять ваше программное обеспечение без S2 или вы просто разделили истории, чтобы помочь с оценкой и планированием? Если S1 - это «Добавить в корзину», а S2 - «Оплата», глупо не создавать интерфейс для поддержки S2, потому что без него ваше программное обеспечение бесполезно. В каждом проекте есть определенный набор известных «обязательных» функций, которые делают ваше программное обеспечение даже достойным поставки. Если обе ваши истории относятся к этому набору, то я бы посоветовал создать интерфейс для поддержки обоих сейчас и не тратить время на рефакторинг позже (# 3).

Обычно, если оба S1 и S2 входят в обязательный набор, они будут вместе в Бэклоге. Если это не так, то либо у вас есть огромное количество того, что необходимо, и ваш проект не получит такого большого преимущества при использовании методов Agile, либо S2 действительно не обязательно. Так что, если вы ожидаете, что между обязательствами по S1 и S2 пройдет много времени (месяцев?), То я бы выбрал интерфейс с 1 параметром. Время всегда вносит огромный вклад в неопределенность.

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

Обычно, если оба S1 и S2 входят в обязательный набор, они будут вместе в Бэклоге. Если это не так, то либо у вас есть огромное количество того, что необходимо, и ваш проект не получит такого большого преимущества при использовании методов Agile, либо S2 действительно не обязательно. Так что, если вы ожидаете, что между приверженностью S1 и S2 пройдет много времени (месяцев?), То я бы выбрал интерфейс с 1 параметром. Время всегда вносит огромный вклад в неопределенность.

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

Обычно, если оба S1 и S2 входят в обязательный набор, они будут вместе в Бэклоге. Если это не так, то либо у вас есть огромное количество того, что необходимо, и ваш проект не получит такого большого преимущества при использовании методов Agile, либо S2 действительно не обязательно. Так что, если вы ожидаете, что между приверженностью S1 и S2 пройдет много времени (месяцев?), То я бы выбрал интерфейс с 1 параметром. Время всегда вносит огромный вклад в неопределенность.

Обычно, если оба S1 и S2 входят в обязательный набор, они будут близко друг к другу в Бэклоге. Если это не так, то либо у вас есть огромное количество того, что необходимо, и ваш проект не получит такого большого преимущества с использованием методов Agile, либо S2 действительно не обязательно. Так что, если вы ожидаете, что между обязательствами по S1 и S2 пройдет много времени (месяцев?), То я бы выбрал интерфейс с 1 параметром. Время всегда вносит огромный вклад в неопределенность.

Обычно, если оба S1 и S2 входят в обязательный набор, они будут близко друг к другу в бэклоге. Если это не так, то либо у вас есть огромное количество того, что необходимо, и ваш проект не получит такого большого преимущества при использовании методов Agile, либо S2 действительно не обязательно. Так что, если вы ожидаете, что между обязательствами по S1 и S2 пройдет много времени (месяцев?), То я бы выбрал интерфейс с 1 параметром. Время всегда вносит огромный вклад в неопределенность.

тогда я бы выбрал интерфейс с 1 параметром. Время всегда вносит огромный вклад в неопределенность.

тогда я бы выбрал интерфейс с 1 параметром. Время всегда вносит огромный вклад в неопределенность.

2
ответ дан 18 December 2019 в 10:48
поделиться

Просто сделайте 1.

Рефакторинг - это легко, прогнозировать будущее - нет.

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

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

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

12
ответ дан 18 December 2019 в 10:48
поделиться

Пуристы скажут вариант 1, но я бы прислушался к здравому смыслу, и если вы на 100% уверены, что это требование, то я бы учел это в вашем дизайне.

ОДНАКО Agile также во многом основывается на рефакторинге, поэтому, пока вы не публикуете этот интерфейс публично, я бы выбрал вариант 1, если его изменение не повлияет на мой дизайн.

1
ответ дан 18 December 2019 в 10:48
поделиться

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

Однако ... Как и на все хорошие вопросы, ответ действительно «зависит от обстоятельств». В некоторых отношениях ваш пример слишком тривиален, чтобы отдать должное обсуждению. Что, если бы история A была «обновлением имени клиента», а история B добавила бы какую-то транзакционную функцию (возможно, paramB - это контекст TX). В таком случае, возможно, над вашими историями нужно поработать. Имеет ли смысл A без B? Реализуется ли A сегодня утром, а B сегодня днем, или B работает в следующем месяце?

0
ответ дан 18 December 2019 в 10:48
поделиться

"It depends." How you answer depends largely on how disciplined your team is.

The situation you describe invites a very small step across the line toward a slippery slope that leads to code bloat. The step is so small that you don't notice the slope. Is it safe? Probably, because it's a trivial example. Many "doesn't it make sense to go ahead and..." cases are larger. And the larger the step, particularly if it crosses a sprint boundary, the greater the chance that you'll guess wrong, and end up with wasted work and extra, unused code. Working in a system with a lot of dead or unused code sucks.

If your team that has a problem with code bloat, I'd "set the anticipation knob at zero" for a while, until people have a feeling for what it's like to build a system in small pieces with no anticipatory design. Seeing a system evolve cleanly is something many developers have never seen. Then revisit the decision. The most productive team I worked with left the knob set to zero and kept it that way for years.

1
ответ дан 18 December 2019 в 10:48
поделиться