Reason is simple. When you write, you have complete context in mind. When I do review I need to switch to your context and if you have horde of variable definitions then it makes switching hard. BTW even C starting from C99 can have variables in different place of code due to this reason. E.g. this text brings some clarification to topic, but it is available in a many books about code smells ( and of course it is often coupled with long methods and multi-responsibility of method ) - http://c2.com/cgi/wiki?DeclareVariablesAtFirstUse