スキップしてメイン コンテンツに移動

『リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック 』☆5

より分かりやすくメンテナンス性の高いプログラムを書くための鉄則集。先輩が後輩を指導するようなわかりやすい語り口と、明日から使える実践的なサンプルが多数ある点がGoodなのです。若手のころに出会っていればよかった。SEは必読です。

↑気になったらここからポチっと(買ってくれるとお小遣いが入ります)↑

この本を読むとわかること

理解しやすいコード

  • 他人が最短時間で理解できるコードが最良のコード
  • 短いコードが必ずしも優れているとは限らない
    • 長いけど読みやすいコード>>短く複雑なコード

表面上の改善

  • 名前に情報を詰め込む
    • 変数や関数には汎用的な単語は避け、内容が一目でわかる明確で具体的な名前を
    • よりメンテナンス性の高いループ変数(i,j,k)の名付け方
    • 変数・関数の名前は読み手への「コメント」と心がける
    • グローバル変数ほど明確に、ローカル変数は簡素でもOK
  • 誤解されない名前
    • 関数の名前はその動作を明快に
    • 変数の名前も概要だけではなく詳細が分かるように
    • 否定形の名前は使わない
    • 最善の名前とは第三者が見ても誤解しない「明確で一意な名前」
  • 美しさ
    • コードの見た目を美しくすることで得られる多くの副次効果
    • 「縦の線」を意識することによるタイプミス削減・可読性向上
    • 変数や関数をランダムではなく「意味のある並べ方」へこだわることの大事さ
    • 処理のブロックごとに要約コメントを追加してブラックボックス化を防ぐ
  • コメントすべきことを知る
    • 優れたコード>>ひどいコード+優れたコメント
    • 優れたコメントとは「プログラマーの考えやそのようにした背景の記録」
  • コメントは正確で簡潔に
    • 関数のコメントは「動作を正確に記述」
    • 冗長な文章よりも、入力に対する出力例を示すコメントを
    • コーディングしている時(一番そのコードに集中しているとき)の考え・意図を記述する

ループとロジックの単純化

  • 制御フローを読みやすくする
    • 条件式の左右(if a>bなど)の明確な使い分け方
    • 条件判定で否定形を避ける
    • コードの行数を身近宇kするよりも、第三者が理解するのにかかる時間を短くする
    • forループやwhileループと比較してdo/whileループが読みにくい理由
    • 悪名高きgoto文が唯一許される場合
    • 深いネストが理解しにくいのは判定条件の理解だけでなく、「ネストにおける現在地」を常に確認しなければならないから
    • 既存のコードに新しいコードを追加する際の鉄則
  • 巨大な式を分割する
    • 分かりづらい式を分割するには式を表す「説明変数」を使って分割
    • 変数が複数入った分かりにくい判定式はその式の意図を表す「要約変数」でくるむ
    • 複雑なロジックを単純なロジックに組み替えるための逆転の発想
  • 変数と読みやすさ
    • ループを抜けるかを制御するフラグなど「制御フロー変数」はうまくプログラミングすれば排除できる
    • 変数の「スコープ」はなるべく小さく、グローバル変数は避ける
    • メソッドはできるだけstaticに
    • JavaScriptでは変数に「var」をつけ忘れるとグローバルスコープになるので注意

コードの再構成

  • 無関係の下位問題を抽出する
    • ループの中で使われる複雑な式や繰り返し使われる式は関数化として切り出すことで可読性と保守性を向上
    • 小さく独立した関数は保守性が高い
    • そのプログラムの主目的ではない処理を関数化して切り出すことで本質的なロジックに集中できる
  • 一度に1つのことを
    • 1ブロックのプログラムで行うのは1つの処理だけに
    • 「プログラムで行っていることを正確に説明」できることを念頭に置いたコーディング
  • コードに思いを込める
    • 何をしようとしているのか説明・思考する順番でコードを記述
  • 短いコードを書く
    • 初期構築以降の維持・保守によってコードが大きくなると改修コストも大きくなる
    • コードをできるだけ小さく軽量に維持することが大事
    • 標準ライブラリに親しみ、やろうとしていることが標準ライブラリで実装済みでないか確認

選抜テーマ

  • テストと読みやすさ
    • コードを検証する完璧な1つの入力値でテストするより、観点ごとに小さなテストを複数作る
    • テストを意識した「テストしやすいコード」を設計
    • テストの難しいコードの特徴と設計の問題

↓気になったらここからポチっと(買ってくれるとお小遣いが入ります)↓

ベストビュー(過去1カ月)

『九龍城探訪 魔窟で暮らす人々 - City of Darkness』 ☆4

魔窟とも言われた香港の九龍城の住人へのインタビューや、在りし日の写真集。香港の本土返還に伴い取り壊されてしまっているけど、その怪しさに妙に惹かれるのです。

【番外編】ボストン旅行記(UMASS Lowell卒業式編)【Day 4:卒業式】

UMASS Lowellの卒業式@Boston。4 日目は卒業式本番です。とても賑やかでアメリカンな式典でした。ただしあいにくの雨、僕曇り男なのに。。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day2:晩餐会】

UMASS Lowellの卒業式@Boston。 2日目は午前中はボストン観光、夕方から Hooding ceremonyという卒業生(大学院生)向けの晩餐会です。卒業式で被るHoodをもらいました。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day0:渡米前にやっておくこと】

UMASS Lowellの卒業式@Bostonについて、計画の立て方やら行く前にやっておくことやらをまとめておきます。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day3:終日観光】

UMASS Lowellの卒業式@Boston。3 日目は終日フリーなので、ゆっくりボストンを観光しました。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day5:帰国】

UMASS Lowellの卒業式@Boston。5 日目にして帰国なのです。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day1:ボストンへ】

UMASS Lowellの卒業式@Boston。 1日目は移動だけで終わりました。

『女たちの王国 「結婚のない母系社会」中国秘境のモソ人と暮らす』☆3

雲南省と四川省の境にある「世界で最後の母系社会を営むモソ族」の社会に入り込んだ中華系シンガポール人女性の手記。結婚という概念がない・一夫一妻制でもないなど、父系社会が当たり前の我々にはイメージしづらい世界ですが、命をはぐくむ女性を中心とした母系社会のほうが生物としては正しい在り方なのかもしれません。

【番外編】AI(機械学習)やってみた。【第3回】ソムリAI ~ニューラルネットワーク編~

AI(機械学習)やってみた、第3弾です。「ニューラルネットワーク(Neural Network)」を使ったソムリAIを作ってみようと思います。”ニューラルネットワーク”、見るからにAIっぽい名前ですよね。

『深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト』 ☆5

一般社団法人日本ディープラーニング協会が実施している「Deep Learning for GENERAL (通称G検定 ) 」 の公式テキスト 。 ディープラーニングについて1冊で網羅的によくまとめられているので 、 ディープラーニングの入門書としてもおすすめです 。 ついでに勢いで資格も取ってしまいました 。 AI人材への第一歩なのです 笑

ベストビュー(全期間)

Malaysia Quarantine Premium Package 【番外編】Malaysia赴任記 隔離ホテル情報

Once entering Malaysia, we need to be quarantined for 14days. At the beginning of COVID-19 spread, the hotel for quarantine have been determined randomly. In these days, we can choose "premium quarantine stay package" in advance . This article is summary of premium packages which I asked each hotel. Note: Information in this article might be old. It's better to confirm the latest plan to the hotel. Note: Only Hotel Istana can be booked via its homepage so far. As the other hotels don't show their premium package plans on their homepage, you need to contact them through their reservation E-mail address or "Contact us". マレーシア入国とともに14日間ホテルで隔離されます。当初は滞在ホテルがランダムに割り振られていたようですが、より快適なプレミアムプランが追加されました。各ホテルにどんなプランがあるのか聞いてみたので、聞いた内容をまとめます。 ※情報が古い可能性があるので、念のため最新情報を各ホテルに確認したほうがよいかもしれません。

【番外編】AI(機械学習)やってみた。【第1回】ソムリAI ~決定木編~

最近ブームのAI(機械学習)に手を出しました。まずは、決定木(Decision Tree)というモデルを使って「ソムリAI(ワインソムリエAI)」を作ってみようと思います。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day0:渡米前にやっておくこと】

UMASS Lowellの卒業式@Bostonについて、計画の立て方やら行く前にやっておくことやらをまとめておきます。

【番外編】AI(機械学習)やってみた。【第6回】乳がん診断AI その1

ソムリAI(ワインソムリエAI)で使った手法で乳がん診断AIを作ってみます。まずは決定木とニューラルネットワークの2つのモデルを試してみます。かなり高性能なモデルができました。名医誕生かもしれません 笑

【番外編】AI(機械学習)やってみた。【第3回】ソムリAI ~ニューラルネットワーク編~

AI(機械学習)やってみた、第3弾です。「ニューラルネットワーク(Neural Network)」を使ったソムリAIを作ってみようと思います。”ニューラルネットワーク”、見るからにAIっぽい名前ですよね。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day5:帰国】

UMASS Lowellの卒業式@Boston。5 日目にして帰国なのです。

【番外編】ボストン旅行記(UMASS Lowell卒業式編)【Day 4:卒業式】

UMASS Lowellの卒業式@Boston。4 日目は卒業式本番です。とても賑やかでアメリカンな式典でした。ただしあいにくの雨、僕曇り男なのに。。

【番外編】AI(機械学習)やってみた。【第2回】ソムリAI ~ロジスティック回帰編~

AI(機械学習)やってみた、第2弾です。前回は決定木(Decision Tree)を使ったソムリAI(ワインソムリエAI)を作りました。今回は「ロジスティック回帰(Logistic Regression)」というモデルを使ったソムリAIを作ってみようと思います。

【番外編】ボストン旅行記(UMASS Lowell卒業式編) 【Day2:晩餐会】

UMASS Lowellの卒業式@Boston。 2日目は午前中はボストン観光、夕方から Hooding ceremonyという卒業生(大学院生)向けの晩餐会です。卒業式で被るHoodをもらいました。

『深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキスト』 ☆5

一般社団法人日本ディープラーニング協会が実施している「Deep Learning for GENERAL (通称G検定 ) 」 の公式テキスト 。 ディープラーニングについて1冊で網羅的によくまとめられているので 、 ディープラーニングの入門書としてもおすすめです 。 ついでに勢いで資格も取ってしまいました 。 AI人材への第一歩なのです 笑