DRYの原則からすると、


/**
* @param int $a
* @return Hoge
*/
function getHoge($a = 1)

$aを二回書くのは無駄でしか無いね。
もっと言えば@paramも無駄だし@returnも無駄。

こんな感じでコメントを書く場所が厳密に決まっていて
同じ事を二回書かなくて済む言語出来ないかねぇ。

// 関数と戻り値のコメントを書く。
function Hoge getHoge(
 int value, // ここに引数のコメントを書く
 string str, // ここに引数のコメントを書く
) {
・・・
}

valueが@paramなのは自明だし型も自明