Dogmatisches TDD

Standard

Immer wieder wird den “Verfechtern” des Test-Driven Developments (TDD) vorgeworfen, dogmatisch zu sein. Vor ein paar Wochen gab es eine Diskussion unter Größen der Software-Entwicklung darüber, wann TDD und Unit-Tests verwendet werden sollen und wann nicht. Hier eine kurze Zusammenfassung.

Die Start-Up-Falle

Alles begann mit einem Blogpost von Robert C. Martin, auch bekannt als Uncle Bob. In diesem Blogpost beschrieb er die Start-Up-Falle. Das ist die Idee, dass die Situtation in einem Start-Up anders wäre. Dass alles, was man über professionelle Software-Entwicklung gelernt hat, in diesem besonderen Job nicht anwendbar ist und man daher die Regeln brechen muss.

Uncle Bob widerspricht dem vehement. Die Start-Up-Phase ist nicht anders. Sie gibt vielmehr die Richtung für die nächsten Phasen vor. Die Praktiken, die zu erfolgreicher Software führen, sind immer gültig.

Natürlich meint er mit einer dieser Praktiken TDD (Test Driven Development). Manche glauben, dass man schneller ist, wenn man keine Tests schreibt.

Uncle Bob setzt dem entgegen, dass der Buchhalter eines Start-Ups unter noch größerem Druck steht als jeder Software-Entwickler. Immerhin verwaltet er oder sie das Geld der Investoren. Dennoch folgt der Buchhalter den Regeln und der Methoden der Buchhaltung. Sind Fehler im Code tolerierbarer als die Berechnungen des Buchhalters? Natürlich nicht. Kann ein Fehler im Code das Unternehmen nicht ruinieren? Natürlich kann er das. Wieso sollte man dann auf TDD verzichten, wenn der Buchhalter auch nicht auf die doppelte Buchhaltung verzichtet?

TDD nicht anzuwenden, macht einen nicht schneller, sondern vielmehr langsamer. Die Gründe dafür sind einfach:

  • Man kann den Code nicht mehr refaktorisieren.
  • Daher wird der Code verrotten.
  • Er wird daher immer schwerer zu handhaben.
  • Man wird langsamer.

Das Gemeine daran, TDD nicht anzuwenden, ist, dass es einem das Gefühl gibt, schneller zu sein. Man arbeitet hart, ist 60, 70 oder 80 Stunden pro Woche in der Arbeit.

Aber Aufwand ist nicht gleich Geschwindigkeit. Mit der Zeit steigen die Schätzungen. Es wird immer schwerer, neue Features einzubauen. Es sammeln sich immer mehr Bugs an. Der Entwicklungsfortschritt wird immer langsamer, die Anzahl der Fehler steigt. Die Katastrophen werden immer mehr.

Daher empfiehlt Uncle Bob: Wenn man schneller vorankommen will,

  • folge den bewährten Praktiken!
  • schreibe deine Tests!
  • refaktorisiere deinen Code!
  • halte den Code einfach und sauber!
  • hetze nicht!

Die Pragmatik des TDD

Der Blogpost über die Start-Up-Falle dürfte einigen Aufruf verursacht haben. Deshalb hat Uncle Bob einen Tag später den nächsten Blogpost verfasst. Darin geht er auf den Vorwurf des Dogmatismus ein.

Im Prinzip wurde Uncle Bob vorgeworfen, dass er zu dogmatisch sei. TDD mag in manchen Fällen großartig sein, aber in anderen Fällen hätte es zu hohe Kosten. Deshalb muss man pragmatisch sein und je nach Situation entscheiden.

Für Uncle Bob ist TDD eine Disziplin für Programmierer wie die doppelte Buchhaltung für Buchhalter oder die sterile Vorgehensweise für Chirurgen. Selbst diese gehen in bestimmten Situationen von diesen Praktiken ab.

Und genauso ist es mit TDD für Programmierer. Uncle Bob listet Fälle auf, in denen nicht einmal er TDD anwendet:

  • Er schreibt keine Tests für Getter und Setter.
  • Er schreibt keine Tests für Member-Variablen.
  • Er schreibt keine Tests für triviale Funktionen oder Einzeiler.
  • Er schreibt keine Tests für GUIs. Er bemüht sich aber, jede signifikante Verarbeitung im GUI-Code in testbare Module auszulagern (MVVM, MVC, MVP, …)
  • Er wendet TDD nicht für Code an, den er noch mit der Methode “Versuch und Irrtum” entwickeln muss. Er schreibt entweder die Tests danach oder löscht den so entstandenen Code und entwickelt ihn mit TDD neu.
  • Er schreibt in manchen Situationen keine Tests für Programme, die klein sind und wirklich nur einmal verwendet werden.
  • Er mockt Software von anderen Herstellern und testet seinen Code. Nur wenn er glaubt, dass die Fremdsoftware nicht funktioniert, oder Mocken zu viel des Guten wäre, testet er diese auch.

Tests für trivialen Code?

Dieser Blogpost wiederum führte zu weiteren Diskussionen über die Frage, ob trivialer Code getestet werden soll. Immerhin hat Uncle Bob geschrieben, dass er Getter, Setter, triviale Funktionen und Einzeiler nicht testet. Mark Seemann vertritt die Position, dass auch trivialer Code getestet werden muss. Seine Argumente:

  • Bei TDD lenken die Tests das Design. Wenn man den Test schreibt, kann man noch gar nicht wissen, ob der Code trivial wird. Er untermauert dieses Argument mit Uncle Bobs Idee der Transformation Priority Premise.
  • Trivialer Code muss nicht trivial bleiben. Wenn ein Getter oder Setter bzw. eine .NET-Property trivial ist, wofür hat man sie dann überhaupt? Getter und Setter ermöglichen es, in Zukunft die Implementierung zu ändern. Um diese Implementierung refaktorisieren zu können, braucht man Unit-Tests.
  • Nicht-trivialen Code nicht zu testen, ist ein schrecklicher Rat für TDD-Anfänger. TDD-Anfänger werden diese Hintertüre jedesmal verwenden, wenn der Code einmal schwieriger zu testen ist. Die Bedingung ist ja auch nicht besonders genau definiert. Wann kann man schon vorhersehen, dass der Code trivial sein wird?

Weiters demonstriert Mark Seemann an einem Beispiel, dass man den Aufwand für das Testen von Properties reduzieren kann. Seine These ist, dass Uncle Bob die Kosten für das Testen von trivialen Code als fix annimmt und den Nutzen dafür als gering. Wenn man aber die Kosten senkt, ergibt sich ein besseres Kosten-/Nutzenverhältnis.

Dem widersprach Mark Rendle. Seine Argumente:

  • Tests für .NET-Properties testen den Compiler und nicht den Code.
  • Sie testen Implementierungsdetails und nicht die Anwendungslogik. Es gibt andere Tests, die eine Anwendungsfunktionalität testen, die die .NET-Properties, Getter und Setter brauchen, sonst müssten sie als toter Code entfernt werden.
  • Sinnlose Tests sind schlimmer als überhaupt keine Tests.
  • Tests für Getter, Setter und anderen trivialen Code verbergen überflüssigen Code.
  • Sie präsentieren TDD in schlechtem Licht, weil sie TDD als unnötig zeitfressend, kleinlich und zwecklos erscheinen lassen.

Daraufhin hat Derick Bailey beiden widersprochen und rechtgegeben. Für ihn ist die Frage, ob eine .NET-Autoproperty getestet werden soll, mit der eigentlichen Funktion des Codes verbunden. Wenn die Property einen Mehrwert liefert, was die Funktionalität betrifft, sollte es auch einen Unit-Test dafür geben.

Jimmy Bogard hat wahrscheinlich unabhängig von der ganzen Diskussion ungefähr zur gleichen Zeit einen Blogpost geschrieben. Kurz gesagt, soll man nur dann Tests schreiben, wenn sie einen Wert bieten. Und wann das ist, beantwortet er mit der berühmten Beraterantwort: “It depends.”

In einem weiteren Blogpost präzisierte Mark Seemann seine Position. In Übereinstimmung mit dem Dreyfus-Modell bevorzugt er fixe Regeln für TDD-Anfänger. Weiters wirft er die Frage auf, ob in seinem Beispiel überhaupt eine .NET-Property notwendig ist. Eigentlich würde auch ein normales Feld reichen.

Start-Ups und TDD

In der Zwischenzeit hat Greg Young auf einen anderen Aspekt des ursprünglichen Blogposts von Uncle Bob geantwortet. Anhand eines eigenen persönlichen Beispiels versucht er dabei zu argumentieren, dass es für Start-Ups gefährlich sei, das Produkt nach den üblichen Entwicklungsmethoden zu entwickeln. Ein Start-Up sollte sich vielmehr darauf konzentrieren, “Production Prototypes” zu entwickeln.

Chris McKenzie hat ihm widersprochen und die Frage aufgeworfen, ob es gerechtfertigt ist, mangelhafte Software am laufenden Band zu produzieren, nur weil man für ein Start-Up arbeitet.

Uncle Bob antwortete in einem eigenen Blogpost und wehrt sich vor allem gegen die Unterstellung, dass TDD jemanden langsamer entwickeln lässt.

Meine Sichtweise

Was halte ich eigentlich von dem allen?

Ich stimme der Position von Uncle Bob zu. TDD ist eine bewährte Methode, doch gibt es Situationen, wo sie nicht praktikabel ist. Allerdings handelt es sich dabei um Ausnahmen, die es so lange wie möglich zu vermeiden gilt.

Ich stimme auch Mark Seemann zu, dass es für TDD-Anfänger fixe Regeln braucht. Nur mit viel Erfahrung kann man Regeln brechen. Deshalb empfehle ich jedem TDD-Anfänger, den Regeln zu folgen. Auch dann, wenn jemand mit TDD-Erfahrung diese Praktik nicht anwenden würde.

Ich habe noch nie in einem Start-Up gearbeitet, aber ich verwende seit ca. 10 Jahren TDD. Und ich entwickle deshalb nicht langsamer. Greg Young beschreibt in seinem Blogartikel einen Fall von technischen Schulden. Um kurzfristige Ziele zu erreichen, kann man auf gutes Design und Unit-Tests verzichten. Allerdings darf man nicht vergessen, rechtzeitig den Code auf eine tragfähige Basis mit Tests zu stellen, sonst verrottet der Programmcode, neue Features können nur mehr mit großem Aufwand eingearbeitet werden und die Fehlerquote steigt. Genauso wie es Uncle Bob in seinem ursprünglichen Blogpost beschrieben hat. Kann es sich ein junges Unternehmen, dass sich noch einen Namen erarbeiten muss, überhaupt leisten, laufend mangelhafte Software auszurollen?

1,716 thoughts on “Dogmatisches TDD

  1. After looking into a number of the blog articles on your
    blog, I truly appreciate your technique of
    blogging. I saved as a favorite it to my bookmark site list and will be checking back in the near future.
    Take a look at my web site too and tell me what you think.

  2. wh0cd296339 [url=http://rocaltrol.doctor/]rocaltrol 0.25 mcg[/url] [url=http://cheapwellbutrin.doctor/]wellbutrin sr 150mg[/url] [url=http://buyavalide.doctor/]buy avalide[/url] [url=http://genericbactrim.doctor/]bactrim[/url] [url=http://tofranil.doctor/]tofranil[/url]

  3. wh0cd296339 [url=http://genericbaclofen.doctor/]baclofen generic[/url] [url=http://buyclomid.doctor/]clomid[/url] [url=http://buykamagra.doctor/]kamagra[/url] [url=http://buyviagra.doctor/]buy viagra[/url] [url=http://buyalbuterol.doctor/]generic albuterol online[/url] [url=http://genericzithromax.doctor/]zithromax[/url]

  4. oxvdasin maglie calcio rxoqymef fotbollstrjor barn grulykme billige
    fotballdrakter xihrdgae billige fodboldtrojer
    rmopxlfv fotbollstrjor mwdqlfsa maglie calcio a poco prezzo uyfvkrcm fodboldtrojer lrejvods billige fotballdrakter

  5. arohjzsy fodboldtrojer ygcimrde maglie calcio poco prezzo
    rdnozcyb billiga fotbollstrjor ktucreao fotballdrakter
    lmsbehqi fodboldtrojer born hugjnmxk billiga fotbollstrjor lgsxhzea maglie del calcio iwjycsur fotballdrakter

  6. Hello, i feel that i noticed you visited my website thus
    i came to go back the prefer?.I am trying to in finding things to enhance my web site!I suppose its adequate to
    make use of some of your ideas!!

  7. hello there and thank you for your information – I’ve certainly picked up something new from right
    here. I did however expertise several technical points using
    this website, since I experienced to reload the web site
    lots of times previous to I could get it to load properly.
    I had been wondering if your web hosting is OK? Not that I
    am complaining, but sluggish loading instances times will very frequently affect your
    placement in google and could damage your quality score if ads and marketing with Adwords.
    Anyway I am adding this RSS to my email and could look out for a
    lot more of your respective interesting content.
    Ensure that you update this again very soon.

  8. Hi there, just became alert to your blog through Google,
    and found that it is truly informative. I am going to watch out
    for brussels. I’ll be grateful if you continue this in future.
    A lot of people will be benefited from your writing.
    Cheers!

  9. Hello! I’ve been following your website for a while now and finally got the courage to go ahead and give you a shout out from Porter Texas! Just wanted to mention keep up the fantastic work!

  10. My developer is trying to convince me to move to .net from PHP. I have always disliked the idea because of the expenses. But he’s tryiong none the less. I’ve been using Movable-type on a number of websites for about a year and am concerned about switching to another platform. I have heard very good things about blogengine.net. Is there a way I can transfer all my wordpress posts into it? Any kind of help would be really appreciated!

  11. Hi there! This post could not be written any better! Reading this post reminds me of my old room mate! He always kept talking about this. I will forward this article to him. Pretty sure he will have a good read. Thank you for sharing!

  12. I actually wanted to make a small note so as to express gratitude to you for those amazing ways you are showing on this site. My extended internet research has at the end been paid with brilliant information to share with my close friends. I would state that that we website visitors actually are definitely fortunate to exist in a fabulous site with very many brilliant individuals with interesting ideas. I feel really privileged to have encountered the web pages and look forward to plenty of more fabulous times reading here. Thank you once more for a lot of things.

  13. It’s in point of fact a nice and helpful piece of info. I’m happy that you simply shared this helpful info with us. Please stay us up to date like this. Thank you for sharing.

  14. My husband and i got joyful when Raymond managed to complete his research via the precious recommendations he obtained when using the weblog. It’s not at all simplistic to simply always be freely giving information the rest may have been selling. And we consider we now have the website owner to appreciate because of that. These illustrations you made, the easy blog navigation, the relationships you can give support to engender – it’s got many excellent, and it’s making our son and the family consider that that content is enjoyable, and that is extraordinarily important. Many thanks for everything!

  15. I’m not sure exactly why but this blog is loading very slow for me. Is anyone else having this problem or is it a problem on my end? I’ll check back later and see if the problem still exists.

  16. Excellent blog here! Also your web site lots up fast! What host are you using? Can I am getting your associate link to your host? I desire my website loaded up as fast as yours lol

  17. Hi this is kind of of off topic but I was wanting
    to know if blogs use WYSIWYG editors or if you have to manually
    code with HTML. I’m starting a blog soon but have no
    coding knowledge so I wanted to get guidance from someone with experience.
    Any help would be greatly appreciated!

  18. เพิ่มไลค์เพจ ราคาถูก, รับไลค์แฟนเพจ, ปั้มไลค์รูป Facebook, ปั้มไลค์เพจ Facebook, รับทำเพจสินค้าพร้อมยอดไลค์, รับเพิ่ม Like Fanpage Facebook ราคาพิเศษ เหมาะสำหรับผู้ที่ต้องการเพิ่ม Like Fanpage ให้ดูเป็นความน่าเชื่อถือของร้าน, บริการเพิ่มไลค์แฟนเพจฟรี, ปั้มไลค์ราคาถูก, การเพิ่ม Like เป็นการเพิ่มโอกาสทางการขายสินค้าของคุณนั่นเอง ด้วยงานบริการเพิ่มไลค์แฟนเพจระดับมืออาชีพ ประสบการณ์การทำงานหลายปี, เพิ่มไลค์แฟนเพจ ราคาถูก, ปั้มไลค์มือถือ, รับจ้างเพิ่มไลค์, จ้างกดไลค์, Add Like Fanpage, ปั้มไลค์เพจคนไทย, รับปั้มไลค์เพจ, ปั้มไลค์เพจ, เพิ่มไลค์, Pump Like, ไลค์แฟนเพจ, รับทำไลค์ครบวงจร, แฟนเพจพร้อมยอดไลค์, ไลค์คนไทย 100%, ปั้มรูป, ปั้มไลค์สถานะ, ปั้มไลค์ ในโทรศัพท์, ไลค์แฟนเพจราคาถูก, รับ Like Fanpage, Auto Like, บริการปั้มไลค์ฟรี, ปั้มไลค์ฟรี, ซื้อไลค์แฟนเพจ, กดไลค์แฟนเพจ, รับสร้างแฟนเพจพร้อมยอดไลค์, ปั้มเพจเฟสบุ๊ค, ไลค์แฟนเพจเฟสบุ๊ค, รับปั้มไลค์รูป, กด Like, เพิ่มไลค์ฟรี, ปั้มไลค์ครบวงจร, Like Fanpage, ปั้มยอดไลค์เป็นคนไทย 100%, รับเพิ่มไลค์แฟนเพจเฟสบุ๊ค, เพิ่มไลค์คนไทย, รับทำเพจเฟสบุ๊ค, ปั้มโพสต์, เพิ่มไลค์แฟนเพจ, ปั้มไลค์ง่ายๆ, ปั้มเพจ, จ้างเพิ่มไลค์, ปั้มไลค์ทั่วไป, ไลค์แฟนเพจได้สูงสุดหนึ่งล้านไลค์, รับจ้างปั้มไลค์, บริการปั้มไลค์แฟนเพจฟรี, บริการเพิ่มไลค์เฟสบุ๊คให้แฟนเพจ, เพิ่มไลค์เพจ, กดไลค์, เพิ่ม Like, ไลค์เพจ, ปั้มไลค์แฟนเพจ, รับเพิ่มไลค์แฟนเพจ เป็นการโปรโมทแฟนเพจ เพื่อเพิ่มยอดขายสินค้าได้, ปั้มไลค์เพจฟรี, ปั้มไลค์รูปเฟส, จ้างไลค์, รับเพิ่มไลค์, โกงไลค์, ปั้มเพจ เหมาะสำหรับผู้ที่ต้องการยอดไลค์เพจเพจเยอะๆ, รับจ้างกดไลค์, รับไลค์ครบวงจรทั่วไทย, ปั้มไลค์รูป, จ้างปั้มไลค์, ปั้มไลค์, บริการเพิ่ม Like ให้แฟนเพจของคุณ โดยทีมงานระดับมืออาชีพ ในระยะเวลาอันสั้นและราคาถูก รับประกันไลค์จากคนไทย 100%, ปั้มไลค์ Facebook, จ้างไลค์รูป, ปั่นไลค์, ปั้ม Like ฟรี, กดไลค์รูป, รับทำไลค์แฟนเพจจำนวนมาก, Up Like Fanpage, ปั้มไลค์เฟสบุ๊ค

  19. Thank you for some other wonderful article.
    The place else may just anyone get that kind of info in such
    an ideal approach of writing? I have a presentation subsequent week, and I am at the
    search for such information.

  20. ปั้มไลค์.com เว็บบริการปั้มไลค์ สถานะ คอมเม้น รูปภาพ และระบบต่างๆอีกมากมายไม่ว่าจะเป็น เชคคนไลค์โพส โพสลงกลุ่ม ต่างๆในทีเดียว เว็บปั้มไลค์ เพิ่มไลค์ฟรี ปั๊มไลค์ เพิ่มไลค์ facebook ฟรี เพิ่มไลค์ สถานะ เพจ รูปภาพ คอมเม้น วิดีโอ ปั๊มไลค์ โกงรูปไลค์ ปั้มlike ปั้มไลค์เฟสบุ๊ค ปั๊มไลค์ สอนfacebookฟรี วิธีแฮคไลค์ โปรเฟสบุ๊ค ออโต้ไลค์ โกงไลค์ ใช้งานง่ายและฟรี

  21. Its like you learn my mind! You appear to understand a lot about this,
    such as you wrote the guide in it or something.

    I believe that you can do with a few percent
    to power the message house a little bit, however instead of that, this is
    great blog. An excellent read. I will certainly be back.

  22. รับเพิ่มยอดไลค์เพจ, บริการปั้มไลค์แฟนเพจ, ปั้มไลค์แฟนเพจคนไทยราคาถูก, ซื้อไลค์แฟนเพจ, รับจ้างกดไลค์เพจ

  23. It is the best time to make some plans for the future and
    it is time to be happy. I have read this post and if I could I desire to suggest you some interesting things
    or advice. Maybe you could write next articles referring to this article.
    I want to read even more things about it!

  24. Hello there, simply was alert to your weblog thru Google, and found that it’s really informative. I am going to be careful for brussels. I’ll appreciate when you continue this in future. Lots of folks shall be benefited from your writing. Cheers!

  25. I spent four years trying EVERYTHING in Online Dating, and through a huge amount of trial and error, I produced a system that I will share for you. This book will take you, step by step, through everything you need to know to double, triple or even quadruple the number of women you meet online.

  26. I am so happy to read this. This is the kind of manual that needs to be given and not the random misinformation that is at the other blogs. Appreciate your sharing this greatest doc.

  27. Increase Facebook Likes, Facebook Auto Liker, Autoliker Facebook, auto liker, Working Auto Liker, Facebook Autoliker, Status Liker, Autoliker, Autoliker, auto like, Facebook Liker, Auto Like, facebook auto liker, Photo Liker, Fb Autoliker, Status Auto Liker, autoliker, Auto Liker, autolike, Photo Auto Liker

  28. Fantastic beat ! I wish to apprentice while you amend your site, how could
    i subscribe for a blog website? The account helped me a applicable deal.
    I had been tiny bit familiar of this your broadcast provided shiny
    transparent idea

  29. ปั๊มไลค์เพจ, ปั้มไลค์แฟนเพจ, ปั๊มไลค์แฟนเพจ, ปั๊มไลค์เพจ, เพิ่มไลค์เพจ, เพิ่มไลค์แฟนเพจ, ปั้มไลค์เพจ, เพิ่มไลค์เพจ ราคาถูก, ปั้มเพจ, ไลค์เพจ, ปั๊มไลค์เพจ facebook

  30. Excellent web site you have here.. It’s difficult to find high-quality writing like yours these days.
    I honestly appreciate individuals like you! Take care!!

  31. I was recommended this website by my cousin. I am not sure whether this post is written by him as nobody else know such detailed about my difficulty. You’re incredible! Thanks!

  32. ผู้นำด้านที่ปรึกษาการตลาดออนไลน์ของไทย เพิ่มไลค์ ปั้มไลค์แฟนเพจ รับเพิ่มไลค์แฟนเพจ เพิ่มยอดไลค์ ปั้มไลค์ ปั้มไลค์คนไทย

  33. That is the appropriate blog for anybody who desires to seek out out about this topic. You realize a lot its almost hard to argue with you (not that I actually would need…HaHa). You undoubtedly put a brand new spin on a subject thats been written about for years. Great stuff, just nice!

  34. This design is incredible! You definitely know how to keep a reader amused. Between your wit and your videos, I was almost moved to start my own blog (well, almost…HaHa!) Wonderful job. I really enjoyed what you had to say, and more than that, how you presented it. Too cool!

  35. Hello! I could have sworn I’ve been to this blog before but after browsing through some of the post I realized it’s new to me. Nonetheless, I’m definitely delighted I found it and I’ll be bookmarking and checking back often!

  36. Thank you, I have just been looking for info approximately this topic for
    a while and yours is the greatest I’ve found out till now.

    But, what in regards to the bottom line? Are you sure concerning
    the supply?

  37. Youre so cool! I dont suppose Ive read anything like this before. So nice to find any individual with some authentic ideas on this subject. realy thank you for beginning this up. this website is something that is wanted on the internet, someone with a little originality. useful job for bringing one thing new to the internet!

  38. Pretty portion of content. I just stumbled upon your site and in accession capital to claim that I get actually loved account your weblog posts.
    Anyway I’ll be subscribing to your feeds and even I success you
    access persistently fast.

  39. Hey there would you mind stating which blog platform you’re using? I’m going to start my own blog in the near future but I’m having a hard time selecting between BlogEngine/Wordpress/B2evolution and Drupal. The reason I ask is because your design seems different then most blogs and I’m looking for something unique. P.S Sorry for being off-topic but I had to ask!

  40. I was suggested this website by my cousin. I’m not sure whether this post is written by him as nobody else know such detailed about my problem. You’re amazing! Thanks!

  41. I think this is among the most vital info for me. And i’m glad reading your
    article. But should remark on some general things, The web site
    style is perfect, the articles is really nice : D.

    Good job, cheers

  42. Can I just say what a reduction to find someone who actually knows what theyre speaking about on the internet. You positively know learn how to carry a difficulty to light and make it important. Extra people must learn this and perceive this side of the story. I cant imagine youre not more common since you undoubtedly have the gift.

  43. I’d need to test with you here. Which is not one thing I normally do! I get pleasure from studying a put up that may make people think. Additionally, thanks for permitting me to remark!

  44. wh0cd78565 [url=http://vardenafil2019.com/]cheap vardenafil[/url] [url=http://prednisolone2019.com/]prednisolone[/url] [url=http://metformin2019.com/]metformin[/url] [url=http://lexapro2019.com/]lexapro[/url] [url=http://acyclovir2019.com/]acyclovir medicine[/url] [url=http://prozac2019.com/]prozac[/url] [url=http://amoxicillin2019.com/]order amoxicillin online[/url] [url=http://zithromax2019.com/]generic for zithromax[/url] [url=http://antabuse2019.com/]antabuse[/url] [url=http://allopurinol2019.com/]allopurinol[/url]

  45. Great post. I was checking continuously this blog and I’m impressed!

    Extremely useful info specifically the last part 🙂 I care for such information much.
    I was looking for this certain information for a very long time.
    Thank you and best of luck.

  46. Call sexy singles locally to indulge in steamy phone sex with them.
    Like all paid dating sites, these are made for those people who are single and
    so are searching for short or long-term relationships.
    Got some funny messages back from guys through the time I was on the line.

  47. This is the suitable blog for anybody who wants to search out out about this topic. You realize so much its virtually hard to argue with you (not that I truly would need…HaHa). You undoubtedly put a brand new spin on a subject thats been written about for years. Nice stuff, simply great!

  48. This is the suitable blog for anybody who wants to search out out about this topic. You realize so much its virtually hard to argue with you (not that I truly would need…HaHa). You undoubtedly put a brand new spin on a subject thats been written about for years. Nice stuff, simply great!

  49. We are a group of volunteers and opening a new scheme in our community.
    Your website offered us with valuable information to work on. You’ve done an impressive job and our whole community will be grateful to you.

  50. naturally like your website however you need to test the spelling on quite a few of
    your posts. A number of them are rife with spelling issues
    and I in finding it very troublesome to tell the reality on the other hand I’ll
    surely come again again.

  51. Great post. I was checking constantly this blog and I
    am impressed! Very helpful info specifically the last
    part 🙂 I care for such info much. I was looking for this certain information for a
    long time. Thank you and good luck.

  52. wh0cd221958 [url=http://bestsildenafilprice.com/]sildenafil[/url] [url=http://bestcialisprice.com/]cialis online[/url] [url=http://bestviagraprice.com/]viagra online[/url] [url=http://besttadalafilprice.com/]generic cialis[/url]

  53. Terrific work! That is the kind of info that should be shared
    around the net. Disgrace on the seek engines for not positioning this post upper!
    Come on over and consult with my website . Thanks
    =)

  54. I am really enjoying the theme/design of your site. Do
    you ever run into any browser compatibility issues? A number of my blog audience
    have complained about my site not operating correctly in Explorer
    but looks great in Opera. Do you have any advice to help fix this problem?

  55. [url=http://bestsildenafilprice.com/]cheap sildenafil[/url] [url=http://besttadalafilprice.com/]buy tadalafil[/url] [url=http://bestviagraprice.com/]viagra online[/url] [url=http://bestcialisprice.com/]cialis online[/url]

  56. [url=http://besttadalafilprice.com/]generic cialis[/url] [url=http://bestcialisprice.com/]cialis online[/url] [url=http://bestsildenafilprice.com/]buy sildenafil citrate online[/url] [url=http://bestviagraprice.com/]Viagra[/url]

  57. Awesome blog! Is your theme custom made or did you download
    it from somewhere? A design like yours with a
    few simple adjustements would really make my blog shine.
    Please let me know where you got your theme. Kudos

  58. [url=http://besttadalafilprice.com/]Tadalafil online[/url] [url=http://bestcialisprice.com/]cialis[/url] [url=http://bestviagraprice.com/]buy Viagra[/url] [url=http://bestsildenafilprice.com/]generic viagra[/url]

  59. Oh my goodness! a tremendous article dude. Thank you However I’m experiencing problem with ur rss . Don’t know why Unable to subscribe to it. Is there anybody getting similar rss drawback? Anybody who is aware of kindly respond. Thnkx

  60. When I initially commented I clicked the “Notify me when new comments are added” checkbox
    and now each time a comment is added I get four emails with the same comment.
    Is there any way you can remove me from that service? Many
    thanks!

  61. wh0cd78565 [url=http://bestsildenafilprice.com/]SILDENAFIL GENERIC CANADA[/url] [url=http://besttadalafilprice.com/]tadalafil[/url] [url=http://bestcialisprice.com/]cialis[/url] [url=http://bestviagraprice.com/]GENERIC VIAGRA[/url]

  62. wh0cd221958 [url=http://bestcialisprice.com/]cialis[/url] [url=http://bestsildenafilprice.com/]sildenafil[/url] [url=http://bestviagraprice.com/]Viagra[/url] [url=http://besttadalafilprice.com/]buy tadalafil[/url]

  63. Didn’t believe when I first started, but after my 1st payout realized, that I won’t be doing any other job. Have a look yourself: http://bit.ly/2ODt2Tt – watch video, register for free, then go to your affiliate section and start making 30 commission on all products. Best for people looking to earn around $2500-$3000/month.

  64. [url=http://besttadalafilprice.com/]buy tadalafil[/url] [url=http://bestcialisprice.com/]generic cialis[/url] [url=http://bestviagraprice.com/]Viagra[/url] [url=http://bestsildenafilprice.com/]sildenafil[/url]

  65. Whats up very nice web site!! Guy .. Excellent ..
    Amazing .. I will bookmark your site and take the feeds additionally?
    I’m glad to find numerous helpful info here in the
    submit, we’d like work out extra strategies on this regard, thanks
    for sharing. . . . . .

  66. [url=http://albuterolhf.com/]albuterol[/url] [url=http://prednisone20.com/]prednisone 10[/url] [url=http://ventolin90.com/]ventolin inhaler[/url] [url=http://cialisq.com/]cialis where to buy[/url] [url=http://lasix40.com/]lasix[/url]

  67. [url=http://furosemide20mgtab.us.org/]furosemide 12.5 mg[/url] [url=http://genericcymbalta.us.org/]Cymbalta Wellbutrin[/url] [url=http://effexorxr.us.org/]Effexor[/url] [url=http://sildenafiloffers.us.com/]sildenafil citrate online[/url] [url=http://lipitorgeneric.us.org/]Lipitor 80mg[/url] [url=http://cymbaltageneric.us.org/]Cymbalta Medicine[/url] [url=http://cialisbest.us.com/]Cheapest Cialis 20mg[/url] [url=http://valtrexbest.us.com/]generic valtrex cost[/url] [url=http://levitra20mg.us.org/]levitra[/url] [url=http://ataraxbest.us.org/]atarax hydrochloride[/url]

  68. wh0cd221958 [url=http://furosemide20mgtab.us.org/]Furosemide[/url] [url=http://cymbaltageneric.us.org/]cymbalta 20mg[/url] [url=http://cialisbest.us.com/]cialis cost per pill[/url] [url=http://ataraxbest.us.org/]ATARAX FOR ANXIETY[/url] [url=http://genericcymbalta.us.org/]cymbalta.com[/url] [url=http://sildenafiloffers.us.com/]sildenafil[/url] [url=http://effexorxr.us.org/]effexor xr 75mg[/url] [url=http://valtrexbest.us.com/]Purchase Valtrex[/url] [url=http://lipitorgeneric.us.org/]lipitor[/url] [url=http://levitra20mg.us.org/]Levitra Professional 20 Mg[/url]

  69. Have you ever considered publishing an ebook or guest authoring on other sites?
    I have a blog based upon on the same topics you discuss and would love to have you share some stories/information. I know my readers would appreciate your work.
    If you are even remotely interested, feel free to shoot me
    an e mail.

  70. I’ve been browsing on-line more than 3 hours as of late, yet I
    by no means found any fascinating article like yours. It is lovely
    worth sufficient for me. In my opinion, if all site owners and
    bloggers made good content as you probably
    did, the net might be a lot more helpful than ever
    before.

  71. [url=http://acyclovir400.com/]buy acyclovir no prescription[/url] [url=http://amoxicillin8.com/]amoxicillin drug[/url] [url=http://doxycycline100.com/]doxycycline pills[/url] [url=http://prednisolone5.com/]buy prednisolone[/url] [url=http://lisinopril20.com/]lisinopril 10mg[/url]