【ちゃんなるぶろぐ】社会人1年生が日々の学びをアウトプット!

>>> 読書・遊び・プログラミング・アプリ開発などを通して学んだことを、文章という形で出力 <<<

3分でわかる!「プログラマが知るべき97のこと」その⑤

読み終えるまで約3分

 

 

どうも、ちゃんなるです! 

今回も"できる"プログラマになるべく、考え方を学びましょう!

 

今回は、次の書籍の一部を要約します。

プログラマが知るべき97のこと』

 

下の記事の続編です↓↓

chan-naru.hatenablog.com

 

 

 

今回選択した3つのテーマ

本書はタイトル通り97のことについて書かれています。

今回は、13~15番目の項目についてまとめます。

  1. コードレイアウトの重要性(No. 13)
  2. コードレビュー(No. 14)
  3. コードの論理的検証(No. 15)

 

①コードレイアウトの重要性

このテーマで述べられていたことは、

「コードは、一目でわかるようにさまざまな工夫をしよう。」

ということです。

 

以下、要約です。

 

実際にコードを書くよりも、コードを探すこと読むことの方に時間を費やしている。

そう感じることもあるでしょう。

修正すべき箇所はないか、あるとしたらどこか、それを確認している時間の方が長いということです。

 

以下は、この「探して読む」を効率化するための3つの方法です。

1. 目立たない部分を作る

人間の視覚は、他とは違う部分をすぐに見つけられるようになっています。

そのため、ドメインに直接関係のない(偶発的複雑性を持つ)部分の書き方を統一するべきです。

 

同じように書かれている部分が続くと読むのがラクです。

 

見た目が似ているコードは動きも似ているという原則を徹底しましょう。

それにより、各コードの違いもわかりやすくなります。

 

本書に書かれていた以下の文を参考にしてみてください。

私は、1つのクラス、1つのコンパイル単位の中での構成要素、つまり、定数、フィールド、パブリックメソッド、プライベートメソッドなどをどうレイアウトするかを定めた規則を設け、それを常に守るようにしています。

(本書26ページより)

 

2. レイアウトに語らせる

コードを構成する各部分には、それがどんな役割を担っているかを一目でわかる名前をつけるべきです。

 

しかし、大事なのは名前だけではありません。

一目でわかるコードを書くには、レイアウトも重要です。

 

そのために、フォーマッターを使用しましょう!

もちろん、開発チームのメンバーの同意を得て、フォーマットのルールを定めることが事前に必要となります。

 

フォーマッタで網羅できない部分は、各自が手で調整すると良いでしょう。

もし、手で調整する回数が多く、また範囲が広い場合はルールを再検討する必要があります。

 

3. コンパクトにまとめる

画面に1度に表示されるものが増えれば、スクロール量やファイルの切り替えが減ります。

コンテキストが分断されることが減るのです。

また、頭の中に保持しておかなきゃいけない情報も減ります。

 

コードやコメントは長ければいいわけではありません。

コンパクトに、必要最低限の情報で構成しましょう。

 

 

②コードレビュー

このテーマで述べられていたことは、

「コードレビューは知識を共有するためにする。厳格である必要はなく、楽しいものにしていこう。」

ということです。

 

以下、要約です。

 

なぜコードレビューをするのでしょうか?

コードの品質を上げ、欠陥を減らすためでしょう。 

 

また、コードレビューの目的は、

『チーム全員に同じ知識を共有させること、またコーディングにおいて全員が守るべきガイドラインを確立すること』です。

 

レビュワーはチームから無作為に選び、他のメンバーの協力も得て順にコードを確認していくという方法がよいです。

技術力の高い人たちだけでレビュワーを構成すると、圧迫面接のような雰囲気になりかねません。

 

*次の点に注意

レビューをされる人:コードレビューはあなたを否定するものではありません。あなたのコードの伸び代を示してくれるものです。

レビューをする人(レビュワー):友好的な態度をとりましょう。建設的であるように心がけ、辛辣な批判は絶対に避けましょう

 

コードレビューをより良いものにするためには、『コードレビュー=楽しい』とすることです。

厳しい言葉の飛び交うレビューよりも、砕けた雰囲気でやるレビューの方がいいはずです。

 

 

③コードの論理的検証

このテーマで述べられていたことは、

「広く認知されているコーディングプラクティスを取り入れよう。」

ということです。

 

以下、要約です。

 

次のことを意識してコーディングしましょう(静的コード解析によって自動的にチェックできるかも)。

  • goto文は使わない。離れたところに依存関係を作ってしまうので。
  • 変更可能なグローバル変数は作らない。
  • 変数のスコープは小さくする。ローカルオブジェクトの宣言位置は、最初に使用する部分の直前にする、とか。
  • 可能な限り不変なオブジェクトを使う
  • ネストする必要が出たら、関数に切り出すことを検討する
  • 関数は短く、1つの機能に絞り込む(24行制限をしてもいい)
  • 関数のパラメータを減らす(できれば4つ以内)
  • インターフェースはできる限り狭くする 

 

まとめ

①レイアウトを統一すること、そのためにフォーマッタを使用すること、そしてコンパクトにすることが大切。

一目で理解できるコードを書きましょう!

②コードレビューの目的は、チーム全員に同じ知識を共有すること、またコーディングにおいて全員が守るべきガイドラインを確立すること

これができれば後は楽しい雰囲気になるように心がけましょう。

③一般的に言われるコーディングプラクティスはなるべく採用するように!

 

*より深く知りたい方は、ぜひ本書を手にとってみてください!

書籍情報

プログラマが知るべき97のこと [ ケブリン・ヘニー ]

価格:2,090円
(2021/5/13 11:12時点)
感想(1件)

【中古】 プログラマが知るべき97のこと /ケブリンヘニー【編】,和田卓人【監修】,夏目大【訳】 【中古】afb

価格:825円
(2021/5/13 11:12時点)
感想(0件)

【書籍名】プログラマが知るべき97のこと

【著者名】ケブリン・へニー、夏目大(訳)

【出版社】オーム社

【出版日】2010年12月

【ページ数】243ページ