wrongwrongな開発日記

情報系大学生が挑戦したことや日常を書いていきます

C/C++/(Java)、見やすい関数の書き方

最近学んだ、CやC++Javaといった言語での見やすい関数の書き方を纏めます。
まず、以下の2つのコードをご覧ください。

int func(int a, int b, int c){

    processing...

    return result;
}
int
func(
        int a,
        int b,
        int c
){

    processing...

    return result;
}

ここで定義している関数2つは、どちらも全く同じ処理をしていますが、後者の方が良い書き方だと教えて頂きました。

何故かというと、極端な例として、以下のようなコードを書く際には、前者のコードでは横に長くなり過ぎてコードの見通しが悪くなるからです。
具体的には、戻り値と関数名、引数として何を取っているかが分かりにくいですね。

inline LongNameClass LongNameFunction(LongNameClass InputData1, LongNameClass InputData2, LongNameClass InputData3, LongNameClass InputData4){

    processing...

    return result;
}

この場合、後者の書き方の方が断然見やすいです。

inline LongNameClass
LongNameFunction(
        LongNameClass InputData1,
        LongNameClass InputData2,
        LongNameClass InputData3,
        LongNameClass InputData4
){

    processing...

    return result;
}

また、この書き方には、各引数の説明をコメントとして書きやすいというメリットもあります。

inline LongNameClass
LongNameFunction(
        LongNameClass InputData1, //コメント
        LongNameClass InputData2, //コメント
        LongNameClass InputData3, //コメント
        LongNameClass InputData4  //コメント
){

    processing...

    return result;
}

個人的な印象ですが、こういった書き方をする/した方がいいのは、特にC系の言語で関数を作成するような場面かなと思います。
Javaではとにかくクラスに入れてやり取りする場面が多く、引数が多くなりにくいですし、そもそも短いコードではこの書き方をすると若干冗長に見えますので、使い分けも大切かなあと。