Unityが無料で発行しているe-Book "Create a C# Style Guide"のレビュー、内容の紹介を書いていきたいと思います。PDFが、下のリンクよりダウンロード可能です。
この本は、キレイで読みやすく管理しやすいコードを書くにはどうすればいいのか、について学ぶことが出来る一冊です。個人制作者も対象ではありますが、チーム内でコードスタイル・ガイドをまとめることの重要性、そしてその方法について注力している本でもあります。
それは"C#コードのスタイル・ガイドを作る!"という題名の通りです。お馴染みの内容もありますが、UnityでのC#コーディングという点からも新しい学びがある本でした。外部の有益な参考資料もいくつか紹介されているので、それも良かったです。
本著でスタイルガイドの見本としているUnity-Code-Style-Guideは、Githubにてテキストとして公開されていますので、これをそのまま使ってもいいし、改良して自分たちのスタイルガイドを作ることもできます。
本の長さ自体は、表紙や目次などを除くと、56ページほどと比較的短いので英語とは言え、そこまで苦労せずサッと読めると思います。
基本的には各項目について軽く触れていく感じなので、より深く本質的にキレイなコーディングについて学びたい場合は、名著『リーダブル・コード』を読むべきだろうと思います。こちらは素晴らしい日本語翻訳もありますしね!
それでは実際の内容は7章ほどあるのですが、文頭の引用文を翻訳しつつ、それぞれの内容について軽く触れていきたいと思います。
Developing as a team
『愚か者はコンピュータが理解できるコードを書ける、優れたプログラマーは人間に理解できるコードを書く』
Martin Fowler, author of Refactoring
本章ではKISS(Keep it simple, stupid)を筆頭に様々な心得を紹介、解説されます。実際の問題も理解せずにハマってしまったり、原因を掴めていないのに、コードが動くまでこねくり回すことの無いように!という至極当然だけど、大事な戒めをまとめた章です。
Create a style guide
『コンピュータサイエンスにおいて、二つだけ困難な事が存在する。それは"キャッシュの不整合"と"命名"だ』(Phil Karlton, software engineer)
本著の主目的でもある、スタイルガイドの制作について書かれます。前述の見本のスタイルガイドだけでなく、マイクロソフトとグーグルのガイドも紹介されています。
C# Coding Conventions | Microsoft Learn
C# at Google Style Guide | styleguide
お堅いルールというよりかは、実際に必然性のあるルールがほとんどなので、慣れてさえしまえば苦になることは無いと思います。
パスカル・ケース、キャメル・ケースという大文字小文字問題についても書かれており、これもお馴染の話題ですが大事ですよね。
変数の命名などの重要なトピックについても触れています。
Formatting
『あなたのコードを書きやすくしたいのであれば、読みやすくしよう』
Robert C. Martin, author of Clean Code and Agile Software Development
コードを整える、フォーマットについて解説していく章になります。命名も大事ですが、コードを単純に文章としての整形について考えるのは重要です。
プロパティについては実装方法がいくつかあり、それを確認できるのが良かったです。
[SerializeField][Serializable]属性タグを使うことで、インスペクター上で上手く表示するテクニックについても触れられています。
Classes
『コンピューティングの短い歴史の中で完璧なソフトウェアを書いた者は今までいない。あなたがその最初の人物になる・・・ということはないだろう』
Andy Hunt, author of The Pragmatic Programmer
クラスの中身を如何に構成するか、について解説する章です。クラスを小さく保つことが強調されます。分割しすぎてもダメかと思いますが、コード全体を分割するためのクラスという機能なので上手く活用したいですね!
Methods
『あなたが予測したモノとあなたが読む各々のルーティン(関数)がイイ感じにマッチしている時に、あなたはクリーンなコードにおいて働いている』
Ward Cunningham, inventor of Wiki and cofounder of eXtreme Programing
メソッド設計についての解説です。変数と同じようにメソッドも名前が重要になり、単一責任についても語られます。とにかくそのメソッドですべきことしかしないようにする、ということになります。
後半には実例を用いて、余分なメソッドを一つのメソッドにまとめるテクニックも解説されます。
Comment
『コードはユーモアのようなものだ。説明をしなければならないとしたら、それは良くないということだ』
Cory House, software architect, author
コメントについての章になりますが、コメントで語る前に明確で必然性のある命名によって、コメントを必要最低限にする状況にしておくことが大事!と前置きされます。
コメントについての注意点がリストアップされているので、確認もしやすいです。
Common Pitfalls
『もしデバッグがバグを取り除くプロセスならば、プログラミングはそれを埋め込むプロセスである』
Edsger W. Dijkstra, computer science pioneer
コーディングについての落とし穴をリスト化しています。意外と短い。
まとめ
自分的には、見知った内容が多かったとは言え、出発点としては良い本であり、復習にも役立つ本なので、定期的に読み返していきたいですね。
個人的にはscript templateを自分で作る方法を知ることが出来たのが大きいです。これについては後日、個別に取り上げます。
こういうe-bookを出してくれるUnityには感謝です。プログラミング・パターンに関するe-bookも出たので、今度はそれを読んでいきます。