Question: I want to rewrite parts of an opensource project. This includes renaming methods. How can I do that efficiently in emacs across the whole project?

I would rather not use hacks such as search and replace in every buffer.

Answer: 
I now use `helm-ag` to find all instances of the function name (searches in all files, incl. subdirs, not just in open buffers), and then I use `C-c C-e` to enter a buffer that lists all the matches and there I change the function name. When I am done I press `C-c C-c (helm-ag--edit-commit)` to store the changes to all the opened files.

This might sound confusing but please see <https://github.com/ShingoFukuyama/helm-swoop>

When you grok it you will cry tears of joy that such wonderful functionality exists.
Since you didn't specify the language, it's hard to give better answers than “Search and Replace”.

Using wgrep
-----------

If you just want to (interactively) replace all instances of a symbol
with another, wgrep is your best bet. It let's you interactively edit
the grep results buffer.

1. Do `M-x package-install RET wgrep`.
2. Run `M-x rgrep`. It will ask you a few easy questions and then do a recursive search for the search-term inside the directory you speficied.
3. Switch to the results buffer and do `M-x wgrep-change-to-wgrep-mode`. This buffer is now editable. Any changes you make here will be reflected in the files themselves.
4. Run a [`replace-regexp`](http://doc.endlessparentheses.com/Fun/replace-regexp) or a [`query-replace-regexp`](http://doc.endlessparentheses.com/Fun/query-replace-regexp) in this buffer, to do the refactoring.
5. Finish your edits with `M-x wgrep-save-all-buffers` and `M-x wgrep-finish-edit`.