Удаляя материал метода класса, который не имеет отношения к вопросу, если я сделаю это:
>>> numbin1 = 0b1000
>>> numbin2 = 0b1010
>>> xornumber = numbin1 ^ numbin2
Я получу
>>> xornumber
2
>>> bin(xornumber)
'0b10'
, который является правильным ответом. Что происходит, вы используете константы 1000
и 1010
, которые являются десятичными константами, и ожидаете, что Python интерпретирует их как двоичные только потому, что вы используете оператор ^
. Вот так:
>>> bin(1000)
'0b1111101000'
>>> bin(1010)
'0b1111110010'
>>> bin(1000 ^ 1010)
'0b11010'
и 0b11010
- это 26
.
Чтобы интерпретировать входную строку пользователя, состоящую из 1 и 0, как целое число, представленное в двоичном формате, обратитесь к к этому ответу .
TDD предназначен, чтобы быть более простым, чем "традиционный" метод (не тестирования его до конца) - потому что тесты разъясняют то, что Вы понимаете проблемы. Если у Вас на самом деле не было четкого представления о том, какова проблема была, запись тестирует, довольно твердо.
Таким образом для новичка, запись тестов получает интеллектуальный сок, идущий в правильном направлении, которое является договорным поведением, не поведением реализации.
Мне жаль, что TDD не был вокруг, когда я сначала учился программировать, и что я взял его прежде чем быть так укрепленным 'старым способом', таким образом, что для меня очень трудно изучить TDD...
Я также думаю, что идеально TDD был бы очень полезен на ранних стадиях изучения. Задним числом я знаю, что это было бы помогших меня, приближаются к проблемам в совершенно другом свете.
То, о чем я озадачен, - то, что, когда каждый учится, существует столько новых понятий, поглощаемых, что беспорядок может начать начинаться очень рано. Поэтому, в то время как я действительно думаю, что TDD был бы супер полезен, я не думаю, что это может быть что-то, что это изучено успешно сам.
Точно так же, как что-либо еще в жизни мы склонны изучать лучше всего, когда кто-то является физически обучающим нас. Показ нас, как они приближаются к проблемам способом TDD, может сделать настолько больше, чем чтение об этом в книгах или в сети. Я имею в виду, это не может причинить боль, но это не замена для наставника, который может действительно ввести Вас в курс дела.
Испытание TDD является всем поэтому, если Вы можете сделать, чтобы кто-то учил Вас, как к TDD во время тех ранних стадий, я думаю, учась, в целом был бы ускорен вне того, что любой будет ожидать.
def self.learn_tdd_and_programming_together?
if you_have_tdd_mentor_sitting_next_to_you?
"go for it"
else
if language.ruby?
"it's possible, there is quite a bit of good stuff out
there that could give you a chance of learning programming
with TDD from the start. It's sort of in the ruby culture"
elsif language.dot_net?
"learn TDD after you learn the basics of .NET"
end
end
end
это, конечно, много для принятия, но сказавший, что мне жаль, что я не начинал писать модульные тесты. То, что на самом деле было бы хорошо, было то, если у меня был наставник на моем рабочем месте, который, возможно, вел мой успех TDD. Я был сам изучение TDD на и прочь приблизительно в течение года и существует много для покрытия и чем больше Вы делаете это, тем более включенным это становится, но это действительно начинает окупаться теперь для меня.
Мой девиз программирования:
Разработка через тестирование обрабатывает первые два.
Я думаю, что новичку нужно преподавать TDD так, чтобы он знал, как сделать программы выполненными. По моему скромному мнению, только затем могут хорошие методы проектирования преподаваться.
Я думаю, что этот комментарий иллюстрирует, что это может быть очень хорошая вещь для новичков учиться прямо.
Думаю, что да. Исследования даже нашли, что преимущества являются самыми большими для новичков. Это дает Вам больше указаний написанием кода. Вы знаете то, чем результаты и поведение должны быть, и писать тесты. Затем Вы пишете код. Тестовая передача. Вы сделаны. И Вы знаете, что сделаны.
Я думаю, что это не хорошо для кого-то, просто изучив программирование. Как тот человек будет знать, что утверждать?:P TDD для дизайна, не для тестирования. После того как человек знает, как программировать, это будет хорошая вещь запустить studiying подход TDD.
Сначала необходимо понять, как кодировать хорошо. Читайте, исследование и practive это, пока у Вас не будет хорошего дескриптора на нем. После того как Вы имеете это, изучаете тест управляемый дизайн - это очень мощно.
Важное преимущество TDD определяет степень готовности. В простом алгоритмическом программировании, если Вы придумываете пару сценариев, где правильность легко утверждается, его легкое, чтобы перечислить их в модульном тесте и продолжать кодировать, пока они все не работают.
Иногда поблочное тестирование может быть трудно для новичков, если существует много зависимостей, и Вы начинаете сталкиваться со сценариями, где насмешка возражает, необходимо.
Однако, если можно сделать простой оператор о правильности, и легко вывести, затем определенно записать его в коде.
Можно также отметить, что, если простой оператор правильности легко не описан, Вы не можете полностью понять свою проблему.
Удачи...
Это действительно зависит от Вашего определения "начинающего". Если "начинающим" Вы имеете в виду кого-то с абсолютно никаким фоном программирования, то не, я не думаю, что TDD является очень хорошим способом начаться. Программист должен изучить основы (избегающий бесконечных циклов, выделения памяти, и т.д.) прежде, чем вызвать беспокойство о рефакторинге и разработке через тестирование.
код является кодом, является ли это вещью, которую Вы пытаетесь пронзить, или тест.
Изучение TDD в самом начале имеет много значения. Это - одни из тех навыков, которые должны быть привычкой. Существуют многие из нас там, которые понимают и как значение tdd, но годы программирования привили немного некоторые привычки, которые может быть трудно повредить позже.
До TDD, являющегося для контракта, разрабатывают/кодируют реализацию/тестирование, это - все те вещи. TDD принесет Вам к идеальному коду? Нет, опыт и изучение ремесла помогут Вам стать зрелым свои подходы кодирования. Но TDD является очень важным инструментом для каждого разработчика.
Использование TDD, надо надеяться, поможет принести Вам к дизайну, который является тестируемым. И дизайн, который является тестируемым, находится в теории, хорошо инкапсулировавшей, и должен придерживаться открытого закрытого принципала.
По-моему, пока люди представление TDD как что-то это - нишевой инструмент или является так или иначе дополнительным, в то время как написание кода, те люди, очевидно, не получают значение TDD.