Testing Blog

Static Methods are Death to Testability

Wednesday, December 17, 2008
Share on Google+ Share on Twitter Share on Facebook
Google
Labels: Misko Hevery

4 comments :

  1. PatrickDecember 17, 2008 at 1:46 PM

    Misko,
    This is a great writeup. I've been looking for a good explanation of why statics almost always lead to "badness".

    The slow evolution of "simple statics" to "bad statics" is hard for people to spot. It's sort of like a glacier moving. But eventually you blink and take a fresh look and realize a LOT has changed.

    Thanks!

    Patrick

    ReplyDelete
    Replies
      Reply
  2. Stanimir SimeonoffDecember 20, 2008 at 2:57 PM

    too bad x.x
    I thought 'twas a satiric moment. (indeed it was the best one)

    ReplyDelete
    Replies
      Reply
  3. Sunil Kumar Lalwani (sksoftmind)February 13, 2009 at 4:54 AM

    Will google give us any audio hosting. sunil kumar lalwani sksoftmind

    ReplyDelete
    Replies
      Reply
  4. SethFebruary 26, 2009 at 6:22 AM

    "If your application has no global state than all of the input for your static method must come from its arguments. Chances are very good that you can move the method as an instance method to one of the method's arguments. (As in method(a,b) becomes a.method(b).) Once you move it you realized that that is where the method should have been to begin with."

    That's the money quote right there. Excellent point!

    ReplyDelete
    Replies
      Reply
Add comment
Load more...

  

Labels


  • Aaron Jacobs 1
  • Adam Porter 1
  • Alan Faulkner 1
  • Alan Myrvold 1
  • Alberto Savoia 4
  • Alek Icev 2
  • Alex Eagle 1
  • Allen Hutchison 6
  • Andrew Trenk 8
  • Android 1
  • Anthony Vallone 25
  • Antoine Picard 1
  • APIs 2
  • App Engine 1
  • April Fools 2
  • Arif Sukoco 1
  • Bruce Leban 1
  • C++ 11
  • Chaitali Narla 2
  • Christopher Semturs 1
  • Chrome 3
  • Chrome OS 2
  • Dave Chen 1
  • Diego Salas 2
  • Dmitry Vyukov 1
  • Dori Reuveni 1
  • Eduardo Bravo Ortiz 1
  • Ekaterina Kamenskaya 1
  • Erik Kuefler 3
  • Espresso 1
  • George Pirocanac 2
  • Google+ 1
  • Goranka Bjedov 1
  • GTAC 54
  • Hank Duan 1
  • Harry Robinson 5
  • Havard Rast Blok 1
  • Hongfei Ding 1
  • James Whittaker 42
  • Jason Arbon 2
  • Jason Elbaum 1
  • Jason Huggins 1
  • Java 5
  • JavaScript 7
  • Jay Han 1
  • Jessica Tomechak 1
  • Jim Reardon 1
  • Jobs 14
  • Joe Allan Muharsky 1
  • Joel Hynoski 1
  • John Penix 1
  • John Thomas 3
  • Jonathan Rockway 1
  • Jonathan Velasquez 1
  • Julian Harty 5
  • Julie Ralph 1
  • Karin Lundberg 1
  • Kaue Silveira 1
  • Kevin Graney 1
  • Kirkland 1
  • Kurt Alfred Kluever 1
  • Lesley Katzen 1
  • Marc Kaplan 3
  • Mark Ivey 1
  • Mark Striebeck 1
  • Marko Ivanković 1
  • Markus Clermont 3
  • Michael Bachman 1
  • Michael Klepikov 1
  • Mike Wacker 1
  • Misko Hevery 32
  • Mobile 2
  • Mona El Mahdy 1
  • Noel Yap 1
  • Patricia Legaspi 1
  • Patrick Copeland 23
  • Patrik Höglund 5
  • Peter Arrenbrecht 1
  • Phil Rollet 1
  • Philip Zembrod 4
  • Pooja Gupta 1
  • Radoslav Vasilev 1
  • Rajat Dewan 1
  • Rajat Jain 1
  • Rich Martin 1
  • Richard Bustamante 1
  • Roshan Sembacuttiaratchy 1
  • Ruslan Khamitov 1
  • Sean Jordan 1
  • Sharon Zhou 1
  • Shyam Seshadri 4
  • Simon Stewart 2
  • Stephen Ng 1
  • Tejas Shah 1
  • Test Analytics 1
  • Tony Voellm 2
  • TotT 54
  • Vojta Jína 1
  • WebRTC 2
  • Yvette Nameth 2
  • Zhanyong Wan 6
  • Zuri Kemp 2


Archive


  •     2015
    •     December
    •     November
    •     October
    •     August
    •     June
    •     May
    •     April
    •     March
    •     February
    •     January
  •     2014
    •     December
    •     November
    •     October
    •     September
    •     August
    •     July
    •     June
    •     May
    •     April
    •     March
    •     February
    •     January
  •     2013
    •     December
    •     November
    •     October
    •     August
    •     July
    •     June
    •     May
    •     April
    •     March
    •     January
  •     2012
    •     December
    •     November
    •     October
    •     September
    •     August
  •     2011
    •     November
    •     October
    •     September
    •     August
    •     July
    •     June
    •     May
    •     April
    •     March
    •     February
    •     January
  •     2010
    •     December
    •     November
    •     October
    •     September
    •     August
    •     July
    •     June
    •     May
    •     April
    •     March
    •     February
    •     January
  •     2009
    •     December
    •     November
    •     October
    •     September
    •     August
    •     July
    •     June
    •     May
    •     April
    •     February
    •     January
  •     2008
    •     December
      • Static Methods are Death to Testability
      • GTAC Videos and Slides Available
      • TotT: Mockers of the (C++) World, Delight!
      • Announcing Google C++ Mocking Framework
      • Mockers of the (C++) World, Delight!
      • Clean Code Talks - Inheritance, Polymorphism, & Te...
    •     November
    •     October
    •     September
    •     August
    •     July
    •     June
    •     May
    •     April
    •     March
    •     February
    •     January
  •     2007
    •     October
    •     September
    •     August
    •     July
    •     June
    •     May
    •     April
    •     March
    •     February
    •     January

Feed

Company-wide

  • Official Google Blog
  • Public Policy Blog
  • Student Blog

Products

  • Google for Work Blog
  • Chrome Blog
  • Official Android Blog

Developers

  • Ads Developer Blog
  • Android Developers Blog
  • Developers Blog
  • Google
  • Privacy
  • Terms