読者です 読者をやめる 読者になる 読者になる

面白きことは良きことなり

拙く未熟なiOSエンジニアの備忘録と戯言

Switchのcase網羅とif文のコメントの書き方

今日の備忘録

Switchをenum値で書く場合、defaultを使わない

SwiftのSwitchはパターン網羅のため、原則defaultパターンを書かないとエラーになる。
ただ、enumを使う場合であれば、全部のenum値のcaseを書くことでdefaultパターン書かずにすむ。
そうすることで、enumを拡張してもパターン網羅されておらず、エラーになりバグを防ぐことができる。

というわけで、

enumを使うSwitchはdefaultを書かない

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

if文のコメントの書き方

if文のコメントの書き方で議論になったのでまとめる。

パターン1

// if文のコメント
if (isButton) {
    hoge
// else文のコメント
} else {
    fuga
}

パターン2

if (isButton) {    // if文のコメント
    hoge
} else {    // else文のコメント
    fuga
}

パターン3

if (isButton) {
    // if文のコメント
    hoge
} else {
    // else文のコメント
    fuga
}

だいたい書き方はこの3パターンで分かれると思う。

パターン1は、コピペ時等にインデントがずれる問題があり、if文内にelse文のコメントが入っていてよろしくないが、割と見やすい
パターン2は、位置に違和感があるものの、わからなくはない。でもなんかダサい。
パターン3は、インデントがずれないけど、if文内の処理に対するコメントに見えたりと把握しにくい。

それぞれ一長一短な感じで、正解がどれとも言えない。
自分は最終的にパターン3の派生で書いている。

パターン3(派生)

if (isButton) {
    // if文のコメント (次に改行を入れるかコメントを入れる)

    hoge
} else {
    // else文のコメント (次に改行を入れるかコメントを入れる)
    // fugaのコメント
    fuga
}

Swift Package ManagerやResearchKit見てAppleがどうしてるかを確認すると、
そもそもif文でコメントが8〜9割なかったりする。
議論の結果、

コメントがなくてもわかるように書くのが真の正解なのかもしれない。 (書けたら苦労はしないけどね)