Loading ...
Sorry, an error occurred while loading the content.

Re: [XP] TDD Like You've Never Seen it Before

Expand Messages
  • Ron Jeffries
    Hello, John. On Tuesday, September 2, 2008, at 7:12:10 PM, you ... Interesting. Makes me wish we could make UNA work. However ... 1. You started with about a
    Message 1 of 67 , Sep 3, 2008
    • 0 Attachment
      Hello, John. On Tuesday, September 2, 2008, at 7:12:10 PM, you
      wrote:

      > A short screencast showing myself and two other developers TDD'ing a
      > Stack in the Java programming language:

      > http://www.vimeo.com/1653402

      Interesting. Makes me wish we could make UNA work.

      However ...

      1. You started with about a million lines of code before
      the first test. Or 15.

      2. Is there some skipped material? It seemed that a method
      magically appeared without being typed in on the screen.
      But maybe I dozed off.

      Definitely interesting. Pretty close to what I'd expect in TDD.
      Close enough, in fact.

      Neat.

      Ron Jeffries
      www.XProgramming.com
      A lot of preconceptions can be dismissed when you actually
      try something out. -- Bruce Eckel
    • Jeff Grigg
      ... I m not sure about the good introduction training aspect of starting with the target class and method shells, and then writing tests. I would consider
      Message 67 of 67 , Nov 13, 2008
      • 0 Attachment
        --- "John A. De Goes" <john@...> wrote:
        > A short screencast showing myself and two other developers
        > TDD'ing a Stack in the Java programming language:
        >
        > http://www.vimeo.com/1653402
        >
        > I think it makes a good introduction to test-driven
        > development, [1] and shows how following TDD strictly
        > leads to test coverage of all code paths. You can
        > download the source code from
        > http://www.n-brain.net/outbox/una-tdd-stack.zip

        I'm not sure about the "good introduction" training aspect of starting
        with the target class and method shells, and then writing tests. I
        would consider this an "acceptable" TDD approach, but not pure, and
        not the approach I take when teaching TDD.

        Overall, I would call it a successful TDD session. And an interesting
        tool.

        _ _ _ _ _


        I'll push the refactoring another two or three steps:

        #1. I don't like duplicate data.

        So I killed the 'private volatile int size;' property, giving...

        public int size() {
        int size = 0;
        for (Node<T> node = head; node != null; node = node.getNext())
        ++size;
        return size;
        }

        public boolean isEmpty() {
        return (head == null);
        }

        [and a few more deleted lines]

        If you want efficient, add a test for it. (...that 'Node.getNext()'
        isn't called N times.)


        #2. Simplify 'push'...

        from
        public void push(T value){
        if (head == null) {
        head = new Node<T>(value, null);
        }
        else {
        Node<T> oldHead = head;
        head = new Node<T>(value, oldHead);
        }
        }

        to
        public void push(T value){
        head = new Node<T>(value, head);
        }


        #3. Delete the default constructor. Java generates one.

        IE:
        public Stack() {
        }


        There. Better now? ;->
      Your message has been successfully submitted and would be delivered to recipients shortly.