Pull to refresh
25
Сергей@DarthSim

User

4
Subscribers
Send message
Ну читайте же полностью, ну не объяснять же каждому отдельно… Да вы и сами написали об этом ниже. В случае локализации вы сам поймете, что функция перестает быть тривиальной, и напишите тест. А в данном отдельном случае тесты не нужны.
> Статья намекает на то, что «тривиальность» величина непостоянная.
Как я, опять же, писал выше, когда к функции возрастут требования, я сразу это пойму. Если такое произойдет, я напишу для этой функции тест перед ее модификацией. Но я не буду писать тест для функции сложения двух чисел, например.

> Ещё хуже то, что тривиальность сложно аршином измерить.
Возвращаясь к К. Беку. Я не буду писать тест, если уверен на 99.999%, что не ошибусь в функции, и если эти 0.001% не будут стоить мне или моему заказчику больших денег. Функция full_name, для которой вы предлагаете писать тесты — она самая и есть.
Здесь говорится о том, что я не могу предугадать тривиальность функции. Я утверждаю обратное, о чем и говорил выше. Возможно, я что-то упустил?
Парсер лох, съел ссылку. Появилась.
Тем не более, и К. Бек и Р. Мартин говорят, что тестировать каждую строку кода не нужно. Вы же на протяжении N комментариев пытаетесь доказать обратное, в конце концов еще и прикрываясь их именами. Причем, за все это время вы мне так и не объяснили, зачем писать тест для элементарной функции, длина которой едва ли больше названия теста для нее.
То, что говорит Кент Бек:
Мне платят за код, который работает, а не за тесты, поэтому моя философия заключается в том, чтобы тестировать настолько мало, насколько это возможно для достижения нужного уровня уверенности (подозреваю, что мой уровень уверенности выше, чем стандарты индустрии, но возможно это просто мое эго). Если я обычно не допускаю ошибок определенного типа (как передача неверных аргументов в конструктор, например), то я не тестирую это.

Думаю, этого вполне достаточно.
Именно издевается. В противном случае я могу сказать, что любую функцию со входными данными практически невозможно протестировать. Возьмем, например, функцию full_name. Пишем тест:
it "should return full name based on first name and last name" do
  full_name("John","Doe").should == "John Doe"
end

Ок, пишем код, руководствуясь тестом и не включая мозги:
def full_name(first_name,last_name)
  "John Doe"
end

Тест прошел, но функция не работает как надо. Нужно проверить с другими входными данными:
it "should return full name based on first name and last name" do
  full_name("John","Doe").should == "John Doe"
  full_name("Jane","Smith").should == "Jane Smith"
end

Ок, тест валится, правим функцию еще раз, но мозг по прежнему не включаем (зачем? у нас же есть тесты):
def full_name(first_name,last_name)
  if first_name == "John" and last_name == "Doe"
    "John Doe"
  else
    "Jane Smith"
  end
end

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

В народе говорят: «Заставь дурака богу молиться, он и лоб расшибет».

А вот еще ссылка на статью по теме: habrahabr.ru/post/143616/
Омфг. Вас послушать, так вы пишите тесты, находясь в нирване и даже не представляя, какой функционал этим тестом пытаетесь описать. Но, держу пари, это не так, и до написания тестов вы себе представляете, что должна делать будущая функция. Вы прекрасно понимаете, что сейчас вам нужна функция для, к примеру, импорта файла с товарами в БД. Вы это поняли не потому что у вас есть такой тест, а потому, что заказчик дал вам задание реализовать импорт товаров в БД. Это сложная функция, вы на нее напишите тест, и я на нее напишу тест. Иная ситуация: для упрощения себе жизни вам нужна функция (как я уже выше приводил) сложения first_name и last_name в full_name. Вы знаете, что должна делать эта функция не потому, что есть такой тест, а потому что вам эта функция нужна именно для этих целей. Вы понимаете, что функция — элементарна.

def full_name
  "#{first_name} #{last_name}"
end

Вы бы стали писать для нее тест? Я — нет.
Не то чтобы согласен с автором.
В процессе написания теста (да что там — в процессе обдумывания теста) вы уже представляете себе то или иное поведение функции. Если функция full_name класса User должна возвращать строку, состоящую из first_name и last_name, разделенных пробелом, то смысла в тестировании такой функции нет. Вы сразу понимаете, что такая функция тривиальна, для этого не нужно как-то описывать ее поведение. Если же в будущем появится необходимость учитывать титул, второе имя, отчество или еще что-то, усложняющее функцию и добавляющее некую разветвленность в ее поведении — пишете тест и потом начинаете реализацию.
Оперируя понятиями «причина» и «следствие», автор сам их подменяет. Вы ведь пишите код не потому, что у вас есть тест. Вы пишите тест потому, что у вас есть необходимость в функционале, который вы знаете изначально.
Ну да, ситуация не изменится, просто это уже не будет считаться проблемой.
Проработав некоторое время за маком, не вижу никаких сходств.
Выше шел разговор об убер-пухе, вот я и привел пример фактически продажи убер-пухи. Вбил данные кредитки — получил лучшую пуху сервера.
У меня почти круглосуточно стоял кот (вторым окном в том числе), на котором по договоренности с парой других торговцев стояли самые выгодные цены на траву в ГД (скупка-продажа). Деньги крутились приличные, но даже этих денег не хватало, чтобы заточить фуллсет на +12. А создать персонажа уровня Винтьего, например, без доната практически нереально. Вы же сами понимаете.

Можно говорить сколько угодно о схеме «либо играй, либо плати», но она не работает. В большинстве случаев нужно и тратить на игру уйму времени и платить.
Хех, в том же ПВ самые крутые пухи (на тот момент, когда я играл) получались за репутацию. Ту тонну репутации, которая была нужна, можно было получить только итемами из шопа. +заточка этой пухи на +12, которая опять же невозможна без шопа. Или, например, фениксы у друидов — получаются только из шопа. А без феникса друля не считается.
Да, эти вещи можно получить, например, наладив торговую сеть. Но это подразумевает твинководство и множественный вход в игру, а это запрещено.
Как человек, игравший в ПВ почти с начала ОБТ и переживший ваш переход в mail.ru, скажу — ничего в вашей репутации не поменялось. Просто вместо «ну это же Нивал» стали говорить «ну это же мэйлру». У вас посреди ГД мог месяцами стоять НПС с не переведенным именем и диалогами (о том, как взять квест и выполнить его люди догадывались методом научного тыка). В тех же морозах боссы весело кричали иероглифами, что добавляло увлекательную игру «что же он сейчас сделает?», имена у этих боссов были переведены явно «промптом». У людей полгода висел квест на данж, который даже не ввели. И таких косяков вал, и это был уже «релиз». О какой положительной репутации вообще идет речь? Вас обманули.
Не возможна, а строго рекомендуема. О каких проблемах вообще речь может идти?
Когда я, например, начинал, Sublime если и был, то был не так популярен (возможно, и не так крут). Собственно, GEdit`а набитого плагинами хватало практически полностью (использовал пакет GMate). Когда вышел GTK3, плагины потеряли совместимость, какие-то из них портировали, но большинство осталось за бортом. Тогда в поисках замены наткнулся на бету саблайма.
Чем лучше? Тем, что человек протрахается весь вечер, после чего бросит это все и пойдет дальше говнокодить в денвере?
Ну тут уже вы сам себе злой буратина. Если не хватало IDE, то могли бы взять хоть тот же NetBeans. Студия для рельсы не нужна.
RubyMine на $50 дешевле (это если не учитывать стоимость самой VS), заточена специально под рельсы и работает под линуксом и макосью. Страдать на винде ради спорного удовольствия разработки рельс в VS? Ну, не знаю.
Цена 249$

За вот эту кучу танцев с бубном, потом снова танцев с бубном в связи с разработкой рельс под виндой. Причем, в это же время в этой же вселенной для любителей IDE существует RubyMine.
Смержил в предыдущий коммент. Забыл о возможности редактировать.

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity