diff options
author | Dmitriy Kiriyenko <dmitriy.kiriyenko@anahoret.com> | 2012-08-15 15:43:04 +0300 |
---|---|---|
committer | Dmitriy Kiriyenko <dmitriy.kiriyenko@anahoret.com> | 2012-12-20 11:06:45 +0200 |
commit | 4a9644a0d94a88896e1ebd3329b8f796fbd053d1 (patch) | |
tree | 40f5bef748e44220479a3ecd15dd17352eb0fdab /tools | |
parent | 01d3a36bfe5d56d85f8a36f2fe10ad96662b4530 (diff) | |
download | rails-4a9644a0d94a88896e1ebd3329b8f796fbd053d1.tar.gz rails-4a9644a0d94a88896e1ebd3329b8f796fbd053d1.tar.bz2 rails-4a9644a0d94a88896e1ebd3329b8f796fbd053d1.zip |
Prevent callback from being set twice.
When you add one callack in two separate `set_callback` calls - it is
only called once.
When you do it in one `set_callback` call - it is called twice.
This violates the principle of least astonishment for me. Duplicating
callback is usually an error. There is a correct and obvious way to do
anything without this "feature".
If you want to do
before_save :clear_balance, :calculate_tax, :clear_balance
or whatever, you should better do
before_save :carefully_calculate_tax
def carefully_calculate_tax
clear_balance
calculate_tax
clear_balance
end
And this even opens gates for some advanced refactorings, unlike the
first approach.
My assumptions are:
- Principle of least astonishment is violated, when callbacks are either
prevented from duplication, or not.
- Duplicating callbacks is usually an error. When it is intentional -
it's a smell of a bad design and can be approached without abusing
this "feature".
My suggestion is: do not allow duplicating callbacks in one callback
call, like it is not allowed in separate callbacks call.
Diffstat (limited to 'tools')
0 files changed, 0 insertions, 0 deletions