1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「プログラマー脳」のchapter2「コードを速読する」

Last updated at Posted at 2023-04-04

目次

1.初めに
2.コードを読むことが重要な理由
3.コードを速読する中で以下を意識する
4.【プログラマー脳】Chapter

1. 初めに

「プログラマー脳」という本を読んでいます。
その中で印象に残ったことや大事だなと思う部分をまとめています。
自分の理解の必要に応じて自分が慣れているJavaScriptで処理を書いています。

2. コードを読むことが重要な理由

プログラマーの時間の60%はコードを書くよりも理解することに時間を費やす。

コードを素早く正確に読むことがプログラミングの向上につながる

コードを読む目的

  • 機能を追加
  • バグを探すため
  • 巨大なシステムを理解するため

目的の共通点はコード中に存在する特定の情報を見つける必要があるということ

つまり、関連する情報を素早く見つけられるようになることが重要

では、素早く見つけるにはどうすればいいのか

3. コードを速読する中で以下を意識する

  • 文字やキーワードのような細かい情報で覚えない
  • 何を覚えたのかではなくてどのように覚えたのかを意識する
  • 新しい情報は認識可能な塊(抽象的な概念)として分割する

文字やキーワードのような細かい情報で覚えない

下記の2つの文を5秒以内に覚えてください

tse cvake aeos
cat loves cake

1つ目の行よりも2つ目の行の方が覚えられたと思います

1つ目の行は12文字を全て覚えなければいけないのに対して、
2つ目の行は意味のある3つのワードを覚えればいいだけです。
すなわち、短期記憶で覚えるには限界があるため細かい情報よりも塊として覚えた方が良いです

何を覚えたのかではなくてどのように覚えたのかを意識する

記憶できた内容そのものだけでなく、どのようにコードを記憶したのかという順序も理解のために使える

下記の文字を全て記憶してみてください

CASE THEN IF SWITCH DEFAULT ELSE IF AND FALSE OR IS TRUE

以下のようにグルーピングができます

  • IF TRUE FALSE THEN ...
  • CASE SWITCH ...

プログラミング(今回はJavaScript)を理解している上級者であるとJavaScriptの文法をもとにグルーピングを行い、多くの文章を記憶しておくことができます

  • 塊にしやすいコードを書く方法
    • デザインパターンを利用する
    • コメントを書く
    • ビーコンを残すこと

(ビーコンとは、コードをながめたときに「ああ、なるほど」と思わせるようなコードの行のこと)

新しい情報は認識可能な塊(抽象的な概念)として分割する

長期記憶に十分な関連情報があれば、文字やキーワードの単純な情報ではなく、「JavaScriptにおけるfor文」や「sort関数によるlogの出力」のような抽象的な概念として記憶できるため、必要な短期記憶の容量が少なくて済む

下記のコードはどのように覚えるのかを考えながら書いてみました

const sortArray = (array) => {
  for (let i = 0; i < array.length; i++) {
    for (let j = i + 1; j < array.length; j++) {
      if (array[j] < array[i]) {
        // iとjを交換する
        let temp = array[i];
        arr[i] = array[j];
        arr[j] = temp;
      }
    }
  }
  return arr;
}

// ソートした配列を出力
console.log(sortArray([14,3,4,6,22,15,2])) // [2,3,4,6,14,15,22]
  • 「for (let i = 0; i < array.length; i++) 」や「console.log()」はJavaScriptの知識のため、それらが長期記憶に含まれていれば、無理に覚える必要も考える必要もありません。
  • ソートの処理が長期記憶に入っていれば、配列の要素を比べて要素の順番を入れ替える処理が必要であることを知っています(JavaScriptのsort関数は今回は使わない想定です)
  • 「iとjを交換する」や「ソートした配列を出力」のようにコメントを先に書いて、後で実装するというやり方も記憶を呼び起こすためには有効です。

4. 【プログラマー脳】Chapter

「プログラマー脳」のchapter1「コーディング中の混乱を紐解く」
Now →「プログラマー脳」のchapter2「コードを速読する」
「プログラマー脳」のchapter3「プログラミング言語の文法を素早く習得する方法」
「プログラマー脳」のchapter4「複雑なコードの読み方」
「プログラマー脳」のchapter5「コードの深い理解に到達する」
【TODO】「プログラマー脳」のchapter6「プログラミングに関する問題をよりうまく解決するには」
【TODO】「プログラマー脳」のchapter7「思考に潜むバグ」
【TODO】「プログラマー脳」のchapter8「より良い命名を行う方法」
「プログラマー脳」のchapter9「汚いコードとそれによる認知的負荷を避けるための2つのフレームワーク」
【TODO】「プログラマー脳」のchapter10「複雑な問題をより上手に解決するために」
【TODO】「プログラマー脳」のchapter11「コードを書くという行為」
【TODO】「プログラマー脳」のchapter12「より大きなシステムの設計と改善」
【TODO】「プログラマー脳」のchapter13「新しい開発者のオンボーディング」

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?