Emacs #1: Clean variable and functions defs

I stumbled with the following statement sometime ago:

"The idea of Emacs is not to leave it, so why defvar is so difficult to update it's values?"

That is, if you define some value with defvar, you can't easily update it with a new one without restart the whole session.

Example:

(defvar test-variable 10)

If you execute the previous code with C-x C-e or M-x eval-last-sexp the value 10 will be bind to the name test-variable.

Let's print it:

(print test-variable)
;;; => 10

Now, let's try to rebind the same name with a different value:

(defvar test-variable "Now, I'm a string value")

Let's print it:

(print test-variable)
;;; => 10

Nothing changed!

You have to use these two functions to cleanup the variable/function values:

(makunbound 'my-variable)

(fmakunbound 'my-function)

Let's try now:

(makunbound 'test-variable)
(defvar test-variable "Now, I'm a string value")
(print test-variable)
;;; => Now, I'm a string value

Is it better to just use setq while you are playing around and them change it to defvar when you know better what you are doing?