こんにちは、株式会社Pentagonの山本です。プログラミングをはじめたばかりの頃、スキルアップを目指して「より良いコードとは何か」ということ考えながらアプリ開発をしていました。
「どうしたらエンジニアとしてスキルアップできるんだろう?」と悩んでいるエンジニアの方も多いと思います。この記事では、アプリ開発を7年間やってきた私が考える「良いコード」について解説したいと思います。
この記事を読み終えると「より良いコードとはどんなコードか」がわかり、エンジニアとしてスキルアップするきっかけになるはずです。
良いソースコードとは?【スキルアップしたいエンジニア向け】
弊社では、”If I were you” 「もし自分があなただったら…」という相手の立場に立って考えるということを大切にしています。結論から言うと、良いプログラミングコードとは「読み手からみてわかりやすいコード」だと考えています。
では、読みやすいソースコードとは、どんなコードでしょうか?これから読みやすいコードを書くための11個の項目を説明します。
わかりやすい命名
変数やメソッドの名前は、誰が読んでもわかりやすいような命名にすることをに気をつけましょう。言語にもよりますが、Swiftであれば、Booleanの変数名には、「is」「should」などをつけて、疑問文になるようなコードにすることをおすすめします。
var isMain = false
if image.isMain {
//do something
}
クラスの役割は明確に
「このクラスではどんな処理をすべきなのか」ということを常に考えます。「この処理は、本当にこのクラスにを書くべきなのか」ということを常に意識しましょう。特に、iOSアプリ開発ではViewController、Androidアプリ開発ではFragmentが肥大化しがちです。クラスの役割をちゃんと考え、あるべきところにあるべき処理を書きましょう。
メソッド内の処理量を少なく
よくある読みにくいコードの例としては、1つのメソッドで様々な処理をしてしまっていることが多いです。メソッドが長い場合は、メソッドを分けたり、インナーメソッドなどを用意することによって、読みやすいコードにすることを心がけましょう。
コメントは簡潔に
コメントは、書く派の人と書かないは派の人で考えが分かれるかと思います。コメントを書くことのデメリットは、コメントを更新したり管理するコストがかかってしまうことです。例えば、途中で変更が入った場合、プログラムだけでなくコメントも変更する必要があります。コメントを変更するのを忘れとると、コメントが正しいのかプログラムが正しいのかどちらが正しいのか分からなくなってしまいます。こういった事態を防ぐためにもコメントを書きすぎるのもよくないと考えています。
また、不要なコメントを書くと言うことも避けたいものです。ソースコードを読めば明らかに理解できるような内容をコメントで書く事は避けましょう。どうしても複雑な処理をしなければならず、少しわかりにくいなと思った時にコメントを書くと良いでしょう。
コメントは、本当に必要なだけ、1行で簡潔に書くとことをお勧めしています。
疎結合に保つ
コード書くときは、常に疎結合に保つことを意識しましょう。疎結合とは、複数のクラス同士が依存しておらず独立性が高い状態にあることです。逆に、密結合とは、複数のクラスが依存してしまっていて、独立性が低いことを指します。
疎結合、独立性が高いと何が嬉しいかと言うと、仕様の変更があった場合に、影響範囲を最小限にとどめることができます。逆に密結合、独立性が低いと、仕様の変更があった場合に、変更しなければならない箇所が多くなりがちです。
疎結合であるかどうかを簡単にチェックする方法は、そのクラスをすぐにサクっと削除できるかどうかと考えると判断することができます。もしすぐに削除できない状況にあれば、そのクラスは密結合になってしまっている可能性が高いです。
再利用できるように
ソースコードは常に再利用できるような書き方をすると良いです。何回も使うようなコードは、再利用できるような形にしておきましょう。コピペによる同じコードの量産を減らしましょう。
APIレスポンスと一致する変数名
変数名は、APIレスポンスのキー名と一致させることをおすすめします。こうすることでサーバーサイドエンジニアとのコミニケーションを円滑にすることができます。もしAPIレスポンスのキー名と違う変数名を使っていると、フロントエンドエンジニアとサーバーサイドエンジニアとの間でのコミニケーションがしにくくなるでしょう。
UIはコードで書かない
iPhoneアプリを開発する場合は、xibファイル、アンドロイドアプリを開発する場合は、xmlファイルでUIを作成することができます。可能な限りxibファイルやxmlファイルでUIを作成することで、ソースコードを減らすことを考えましょう。
マジックナンバーを避ける
ソースコードにいきなり数字を書くのは、良くないコードの始まりかもしれません。ぱっと見たときに何かわからない数値のことをマジックナンバー呼びます。次の例を見れば、どちらが読みやすいか明白だと思います。
if user.gender == 1 {
//do something
}
if user.gender == Constant.women {
//do something
}
多段階ネストを避ける
多段階ネストを避けるような工夫をしましょう。if文が連続するなどしてネストが多くなると読みにくいコードになってしまうことが多いです。Swiftであれば、guard節などを使って、早期リターンさせることでネストが深くなるのを避けることができます。
ライフサイクルメソッド内はシンプルに
iPhoneアプリの開発であれば、ViewControllerにviewDidLoadというメソッドが存在します。よくoverrideするこのメソッドですが、ぱっと見で何をしているのかすぐわかる状態にしておきましょう。
良い例
override func viewDidLoad() {
super.viewDidLoad()
setupConstraint()
setupMessagesCollectionView()
setupCustomizeLayout()
hideNavigationBarIfNeeded()
fetchOrder()
}
悪い例
override func viewDidLoad() {
super.viewDidLoad()
setupConstraint()
setupMessagesCollectionView()
if user.isAnonymous {
//do something
} else {
//do something
}
if shouldHideNavigationBar {
//hide navigationBar
}
fetchOrder()
}
【まとめ】相手の立場で読みやすいコードを
いかがでしたか? より良いコードを書くにはどうしたらいいの?
結局のところ、大切な事は、相手の立場に立って読みやすいコードを書くです。
もっと詳しく知りたい方は、リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック がおすすめです。
フリーランスエンジニアを目指す方はこちらの記事も合わせてご覧ください。
» フリーランスエンジニアのメリット・デメリットは?リアルな実態を解説