【感想・ネタバレ】良いコードを書く技術 ― 読みやすく保守しやすいプログラミング作法のレビュー

あらすじ

読みやすく保守しやすい「良いコード」の書き方を解説した入門書です。『WEB+DB PRESS』で断トツ人気だった連載を加筆・修正して書籍化しました。
本書を読むと,良いコードを書くための習慣から名前の付け方,コードの分割や集約を行う方法,抽象化の作法,計算量とアルゴリズム,ユニットテストやメタプログラミングまで,プログラマとして長く役立つ基本が身につきます。

...続きを読む
\ レビュー投稿でポイントプレゼント / ※購入済みの作品が対象となります
レビューを書く

感情タグBEST3

Posted by ブクログ

Web+DB Press Plus
良いコードを書く技術
読みやすく保守しやすいプログラミング作法
著:縣 俊貴
出版社:技術評論社

増補改訂版を先に読んでいたにもかかわらず、ISDNが違っていたので、旧版を購入してしまった。

普通のプログラマ、中級のプログラマ、達人プログラマのやり取りがレベル感を語ってくれます

最近は、AIがプログラミングするようになって、コードを書くことが軽視されているように思えるようになるなか、あえて良いプログラムを書くことを前面に出すことは良いと思います。

でも、同じ人間でも、調子によって、書きっぷりは変わるし、ましてや、別の人間が書く時に、統一感が失われるのは、はがいいものです。

ひとつ言えることは、コードは、長く、受け継がれていくものであって、まさに、その会社の資産となっていくものであるので、次の担当が、理解しやすく、メンテがしやすいように用意するのは礼儀かとおもいます。

どうしてこうなっているのか、わかれば、デグレードも減り、開発工数も圧縮できます。

それは、CI/CDなどの技術が導入された今日でも変わらないと思います。

目次 (増補改訂との差異 *:他、増補改訂では章がひとつ増えています)

はじめに
謝辞

第1章 良いコードとは何か

1.1 良いコードの定義と価値
1.2 良いコードの定義
1.3 良いコードの価値
1.4 代表者の声
1.5 まとめ

第2章 良いコードを書くための5つの習慣

2.1 良いコードは1日にしてならず
2.2 習慣その1 読む ── コードを読んで読んで、読みまくれ!
Column:GitHubでコードの海を泳ぐ
2.3 習慣その2 書く ── とにかくコードを書こう
Column:1人でプログラムを書けますか?
2.4 習慣その3 道具を磨く ── 使う道具は常に磨いておこう
Column:良い道具に乗り換える
2.5 習慣その4 知る ── 良い知識を得よう
2.6 習慣その5 聞く ── アウトプットと人からのフィードバックでさらなる成長を
2.7 まとめ

第3章 名前付け

3.1 良いコードは良い名前から生まれる
3.2 代表者の声
3.3 良い名前の条件
Column:名前の流行り廃り
3.4 変数名
Column:変数の種類
3.5 メソッド名
Column:メソッドの種類
3.6 クラス名
3.7 パッケージ/ネームスペース名
3.8 プロジェクト名
3.9 まとめ
Column:あるWebアプリケーションフレームワークでのクラス名の変遷

第4章 スコープ

4.1 スコープを意識していますか?
4.2 スコープって何?
4.3 スコープを小さくして覚えておくことを減らそう!
4.4 代表者の声
4.5 変数のスコープ
Column:JavaScriptの奇妙なスコープ
4.6 メソッドのスコープ
4.7 クラスのスコープ
4.8 キャストを使用した可視性の制御
4.9 より大きな粒度のスコープ
4.10 まとめ

第5章 コードの分割

5.1 適切な長さにコードを分割する
5.2 なぜコードを分割するのか
5.3 代表者の声
5.4 2つの方向からの分割
5.5 お題 クライアントにXMLを返すWeb APIの処理を分割する
5.6 ステップ1 ベタなコードで書いてみる
5.7 ステップ2 共通処理をメソッドに抽出して分割する
5.8 ステップ3 処理単位で分割する
5.9 ステップ4 状態を持つ処理をクラスに抽出して分割する
5.10 まとめ

第6章 コードの集約

6.1 コードの重複は悪
6.2 代表者の声
6.3 メソッドに抽出してまとめる
6.4 継承でまとめる
6.5 ユーティリティクラスにまとめる
6.6 サービス層にまとめる
6.7 オブジェクトにまとめる
6.8 定数にまとめる
6.9 まとめ
Column:まとめすぎにご用心

第7章 コードのパフォーマンス

*7.1 パフォーマンスを意識していますか?
7.2 代表者の声
7.3 パフォーマンスは計算量で決まる
7.4 パフォーマンスチューニングの手順
7.5 アルゴリズムの選択以外のパフォーマンスチューニング
7.6 パフォーマンスチューニングの指針
7.7 まとめ

第8章 ユニットテスト

8.1 テストはお好きですか?
8.2 ユニットテストって何?
8.3 代表者の声
8.4 ユニットテストの効能
8.5 お題 Webアプリケーションのセキュリティテスト
8.6 ステップ1 データベースにテストデータを登録する
8.7 ステップ2 画面の実装
8.8 ステップ3 画面のユニットテスト(正常系)
8.9 ステップ4 画面のユニットテスト(異常系)
8.10 ユニットテストの指針
8.11 まとめ
Column:言語別のテスティングフレームワーク

第10章 抽象化

9.1 抽象化がプログラミングのパワーを最大化する
*9.2 配列/コレクションって何?
*9.3 配列/コレクションを利用した抽象化とは?
9.4 代表者の声
9.5 お題 画像ファイルの一覧を表示するWebアプリケーション
9.6 ステップ1 ベタなコードで書いてみる
9.7 ステップ2 可読性を高めるためのメソッド抽出
9.8 ステップ3 関連するデータのデータ構造を整理
9.9 ステップ4 配列/リスト化して抽象化
9.10 抽象化の指針
9.11 まとめ

第10章 メタプログラミング

10.1 プログラミングをプログラミングする
10.2 代表者の声
10.3 メタプログラミングって何?
Column:流れるようなインタフェースとstaticインポートによる内部DSL
*10.4 お題 Excelを使った外部DSL
10.5 ステップ1 ベタなコードで書いてみる
*10.6 ステップ2 メタデータをExcelに移動する
*10.7 ステップ3 リフレクションAPIで変換ルールを動的に適用する
10.8 まとめ

第11章 フレームワークを作ろう

11.1 フレームワークの動作原理を知る
11.2 代表者の声
11.3 お題 Webアプリケーションフレームワークを作ろう
11.4 ステップ1 素のサーブレットで書いてみる
11.5 ステップ2 フロントコントローラとアクションクラスの導入
11.6 ステップ3 ルーティング情報の外部ファイル化
11.7 ステップ4 よく使う処理を簡単に実行できるように共通化する
11.8 ステップ5 フレームワークをパッケージ化する
11.9 まとめ

付録A コードリーディングの方法

A.1 コードには動的な読み方と静的な読み方がある
A.2 お題 Apache Commons IOのコードを読む
A.3 ステップ1 対象のコードをダウンロード(チェックアウト)する
A.4 ステップ2 静的な方法でコードを読む
A.5 ステップ3 動的な方法でコードを読む
A.6 まとめ

付録B 解説付き参考文献

あとがき
索引
著者プロフィール
ISBN:9784774145969
判型:A5
ページ数:240ページ
定価:2280円(本体)
2011年05月10日初版第1刷発行

0
2025年08月02日

Posted by ブクログ

名前付け、スコープの意識、コード分割からテストまで、「良いコード」を書くことにフォーカスした内容で初学者の僕にとってとても読み応えのある本でした。まじめすぎず極力難しい言葉を使わないようにしてくれているのも読みやすかったポイントだと思います。

0
2021年06月06日

Posted by ブクログ

久々にコードを書きたいと思って読んでみた。学生時代に研究でプログラミングしていたけど独学な部分も多い自分には基礎を押さえられる良書でした。第2章、第3〜7章、第9章が特に。逆に既にバリバリ書いている人には簡単すぎる内容だと思う。ひと通り動くプログラムは書ける、という人向けかな。

0
2013年05月01日

Posted by ブクログ

文章も理解しやすい分量、言葉遣いだったりして読みやすかった。
まずは読んでもらいやすそうな量、内容という点で良書。

0
2012年10月25日

Posted by ブクログ

コーディングの基礎とその先へ、という目標設定で書かれている印象。量も適度で読みやすいので、まず新人に読ませたくなる本。

0
2011年06月26日

Posted by ブクログ

タイトル通り、良いコードを書くための基本的な方法をまとめた本。
普通のプログラマのためのステップアップガイドという謳い文句も、その通りだと頷ける内容。
この本に書いてある内容はおさえておかないと、コード書くときに要らない苦労をするハメになる。
基本JavaでWEB関係のサンプルコードが多い。
自分はほとんどJavaを触った事がないけども、大体の考え方は他の言語でも通用すると思う。

0
2011年06月10日

Posted by ブクログ

記載されているサービスは終わっていたりします。

しかし、本丸の内容についてはどのように抽出するべきなのか、どのような観点でコードを見るべきか、ステップアップのプロセスを提示していると思います。

例は簡単なコードで行っていますが、書かれている内容や手法を理解することができれば初心者ラベルは外す頃合いなのかもしれません。

0
2018年09月17日

Posted by ブクログ

Javaを基本に書いているが、どんな言語でも当てはめて読める。
きれいなコードを書ければメンテも楽チンになるのだ。

0
2014年09月28日

Posted by ブクログ

初心者、中級者、達人の目線から「良いコード」を書く際に気をつけるポイントが紹介されて居ます。

書いてあること自体はシンプルで、分かりやすく、主にJavaのサンプルコード付きで解説されているので、JavaでWebのコードを書く方には特にお勧めです。

初盤は初心者向けの内容が並びますが、中盤以降は抽象化や、フレームワークの構築などについて書かれており、頭を使いながら読み進める内容ですので、中級者にもお勧め出来る内容かと思います。

0
2014年05月12日

Posted by ブクログ

後輩への指導と自分の再勉強用に読む
仕事上だとできる人が作った型にはめられることが多いが、本書のようなことをもっと多くの方に理解してもらえれば、型を緩めて自由度を高めることができる(はず)。そうなれば、著者の述べるとおりプログラミングが創造的でエキサイティングで楽しいものとなるし、そうありたいと思わざるを得ない。

0
2013年09月23日

Posted by ブクログ

よりよいコードを書くためのプログラミングノウハウ集。抽象的なものではなく、実際にコードを例示しているので理解しやすい。

0
2013年08月11日

Posted by ブクログ

新しい発見もあるし、間違っていたとわかることもあるし、
あっていることはあっていると再認識できる。
特に良い仕事をしたい普通のプログラマにとって、
非常に有用な本だと思いました。

この本を読んで、コード書いて、
他の本読んで、コード書いて、
人のコード読んで、コード書いて、
この本を読み直したら、良いコードが書けるようになると思う。

まずは目指せ、達人を目指す中級プログラマ、かな。

0
2012年08月11日

Posted by ブクログ

this book gave me how to write codes. let me start to think "code for what?"
not concrete how-to, but absolute notion, manner.
programming is developing study area. so no answer is here. we including me, make the whole from really tiny part.

for begginer, this is littie difficult. Java is based knowledge on this book. but anybody can get something.

0
2012年04月30日

Posted by ブクログ

良いコードを書くためのHow-to本です。
とっつきやすく読みやすいため2時間ほどあれば読み切れます。
本書P.15-16に書かれていることがこの本に対する全てです。
本書で基礎を理解したら原典と呼ばれる良書を読みましょう。
幸い、本書の付録には解説付きの参考文献が載っているので
次に読むべき本について戸惑うことはないでしょう。

0
2011年11月23日

Posted by ブクログ

タイトル通り、良いコードを書くために必要な技術を幅広く紹介してくれている本。Javaメインで話が進んで行くので、Javaプログラマの自分には分かりやすかった。でも、Javaを知らない人でも理解できると思う。この本の中には「普通のプログラマ」・「中級プログラマ」・「達人プログラマ」の三人の登場人物がいるのだけれど、自分は「普通のプログラマ」に共感することが多かったなー。「達人プログラマ」とまではいかなくても、「中級プログラマ」にはなりたいな。

0
2011年11月19日

Posted by ブクログ

プログラムを書く上での基本が書かれている。
確かに初心者向けかもしれないけど、再確認できる部分は十分あると思う。

0
2011年10月12日

Posted by ブクログ

初級から中級ブログラマへのステップアップへのきっかけにするには、良い本だと思います。
次のような人におすすめします。
・とりあえず正確に動作するコードは書けるが、良いコードが書けているかというと自信がない
・良いコード書くための名著、古典を読んだが、ついていけなかった

特に、「初心者のころは、新しいクラスを作成するのには勇気がいるが、
インナークラスなら気軽に作れる」という心理的な面でのネストクラスの解説が、
私は気に入りました。
# もちろん、「本来は技術的な判断で決定されるべきだ」と、
# ちゃんと本書でもフォローはされていますので、誤解なきよう。

なお、解説のメイン言語はJavaです。

0
2012年04月28日

Posted by ブクログ

ネタバレ

Javaを例に書いておりました.初心者に毛の生えた程度の自分にはちょうどいいくらいのわかりやすさでどのように記述していくか等の内容です.

0
2011年09月15日

Posted by ブクログ

プログラマーでなくても、SEとしてソースを書くなら
読んでおきたい一冊。読みながらプログラミングしたい。

0
2011年08月28日

Posted by ブクログ

今年、プログラミングを本格的にはじめた人や、会社に入って多人数での開発をはじめてやる人に読んでもらいたい書籍。自分一人がつくって終わるソフトウェアではなく、多くの人が利用して、改変して使い続けるソフトウェアをつくるために、どういったことが必要なのか。どういうテクニックがあるのかをとてもわかりやすく解説している。何よりもページ数が少なくて、読みやすいのが良い。
プログラミング経験が浅い方
より良いソースコードの書き方が知りたい人
良いコードを書こうと今まで本気で思って実行してこなかった人
そんな人にオススメです。

0
2012年06月06日

Posted by ブクログ

自分にはまだ難しい本だったし、Javaを基本に説明とかがあったがJavaがわからないので余計に難しかった。

0
2025年04月08日

Posted by ブクログ

コードを書く際に気をつけることをまとめている本
もう少しうまく書けばリーダブルコード的な感じになれたかもというくらいには良い感じでまとまっている。
名前付け、スコープ、分割、集約、パフォーマンス、ユニットテスト、抽象化、メタプログラミング、フレームワーク

0
2022年10月30日

Posted by ブクログ

サクッと読めたがJavaのサンプルコードなのでRuby/JavaScriptの自分にはあまり頭に入らなかった。

0
2021年05月26日

Posted by ブクログ

ネタバレ

重複コードをどのくらいまとめるのか、あえて重複したまま残すのかは難しいところでいつも悩む。オレオレ単語の「regist」は早速直すことにしました。

0
2017年12月20日

Posted by ブクログ

浅く広くな印象。
書いていることは悪くないけど、対象が初心者向けなら、メタプログラミングはいらないような。。。

サクッと読んで、次の本に行くのがいいかな。

0
2015年04月15日

Posted by ブクログ

ネタバレ

自分は現在はプログラマではないが、昔はプログラマであったので
2013年はRebornをテーマにしていることもあり、読んでみた。

良い知識を得るには
原点とhow to物を両方読むということが大切であることがわかってよかった。

0
2013年02月11日

Posted by ブクログ

どちらかというと、リファクタリングやリーダブルコードよりライト層向けの内容でした。とりあえず新人などに読ませるには分かりやすい内容としてまとまっていると思います。上記の本を既読の人には、必要ない気もします。

0
2012年12月30日

Posted by ブクログ

ネタバレ

主にJAVA系の言語で、正しいクラス名、メソッド名、変数名などの付け方に始まり、フレームワークやメタプルグラミングまでの触りを解説しています。

前半の名前つけに関しては、VBなどの他の言語でも当然だと思う一方で、意外と面倒くさがって分かりにくい名前を付けてしまうので、出来るだけ注意しないと。

た、JAVAを勉強する機会があったら、後半のフレームワークやメタプログラミンング、DSLも読み返したいと思います。JAVAのコードを書く上でのお作法みたいな本です。

0
2012年10月22日

Posted by ブクログ

ネタバレ

前中後の3つに区切るとすれば、中の『3章名前付け』から『6章コードの集約』までが読み応えがありました。
前と後にあたる章は飛ばす程度の速さで読み進めましたが、もう少しプログラミング経験を積んだあとに読めば「ああ、なるほどなあ」と納得する部分も増えていくのかな。

0
2014年08月03日

Posted by ブクログ

良いコードを書くためには、継続的なコードの読み書きが必要となる。

参考キーワード
 Github

0
2011年06月26日

「IT・コンピュータ」ランキング