スコープの先頭で変数宣言、末尾に唯一のreturn

昔のC言語とかでは、変数の宣言はスコープの先頭でしか行えないという制限がありました。

{
  int hoge;    // OK

  hoge = 2*3;

  int huga;    // NG
}

この辺の余波を受けているせいか、そういった制約の無い最近でも、スコープの先頭以外で変数の宣言を行うと怒りだす方々がいらっしゃるようです(会ったことはありませんが)。

そういうのは偏屈が過ぎると考えてはおりますけど、ただ、言い分はもっともとも思います。あまりにゆとり過ぎたひとが奇想天外な場所で宣言をしてみたりして大混乱させられる羽目を思えば、制約を課す方が幸せかもしれません。基本的には、使用する変数は1箇所にまとめて置くのが自然で、かつそれは先頭であるのがガチです。また、変数に限らずグローバルスコープのデータに対するアクセスなんかも、同様だと思います。他人のソースを見ていて、折角処理をおっかけてるのに、突然グローバルの知らない変数が出てくるとそこで「?この変数は、どこにある何のための変数なのか?」と思考が停止していまいます。処理内で使用するデータは、予め先頭にて宣言したローカル変数にコピーしておいて、処理内ではローカル変数を用いた方が良いでしょう。グローバルスコープのデータアクセスは遅いので、高速化にもなりまっせ〜。

// グローバルスコープ
int foo;
BarClass bar;

int function(int a, int b)
{
// ローカルスコープ
   int tmp = foo;
   BarClass* pBar = &bar;

   // 処理
   :
   :
   :
}

ちうか、グローバルデータからのデータアクセスって要は「外部からのデータI/O(インプット/アウトプット)」な訳ですから、グローバルスコープからのデータ読み込み(インプット)はスコープの頭に、グローバルスコープへのデータ書き込み(アウトプット)はスコープの末尾に設置するのが定石ってのはもっともな話だ。