プログラマが知るべき97のこと
https://www.oreilly.co.jp/books/images/picture_large978-4-87311-479-8.jpeg#.png
書籍
Kevlin Henney
和田卓人
夏目大
2010年
O'Reilly Japan - プログラマが知るべき97のこと
/gosyujin-bookmarks/プログラマが知るべき97のこと
技術的負債
故意の技術的負債
参照透過性
一定の規約に従ってコードを書くというのは、自動化をしない限り面倒である
/gosyujin-bookmarks/コーディング規約を自動化する#5e60b63ff45820000005c2f0
文章にしろ、和音にしろ、リズムにしろ、美しく、優雅なもの、優れたものはすべて、シンプルである
/gosyujin-bookmarks/美はシンプルさに宿る#5e60b660f45820000005c304
ゼロから書き直したい衝動に駆られる
/gosyujin-bookmarks/リファクタリングの際に注意すべきこと#5e60b674f45820000005c332
自分が最初に見た時よりも、世界をいい場所にすべく努力しよう
/gosyujin-bookmarks/ボーイスカウト・ルール#5e60b6acf45820000005c381
完全にありえないことをすべて取り除いていけば、残ったものがいかに信じがたいものでも、事実に違いない
ありえないことを全部排除して残ったものは、どんなに信じがたくても、間違いなく真実だ
/gosyujin-bookmarks/他人よりまず自分を疑う#5e60b6b9f45820000005c3bc
24行制限
/gosyujin-bookmarks/コードの論理的検証#5e43a585f458200000211491
書くのに苦労したコードは、読むのにも苦労する
コメントを入れたことで却ってコードがわかりにくくなっては意味が無い
/gosyujin-bookmarks/コメントについてのコメント#5e5f6d93f458200000a6ccf7
目次
分別のある行動
関数型プログラミングを学ぶことの重要性
ユーザが何をするかを観察する(あなたはユーザではない)
コーディング規約を自動化する
美はシンプルさに宿る
リファクタリングの際に注意すべきこと
共有は慎重に
ボーイスカウト・ルール
他人よりまず自分を疑う
ツールの選択は慎重に
ドメインの言葉を使ったコード
コードは設計である
コードレイアウトの重要性
コードレビュー
コードの論理的検証
コメントについてのコメント
コードに書けないことのみをコメントにする
学び続ける姿勢
誰にとっての「利便性」か
すばやくデプロイ、こまめにデプロイ
技術的例外とビジネス例外を明確に区別する
1万時間の訓練
ドメイン特化言語
変更を恐れない
見られて恥ずかしいデータは使わないこと
言語だけでなく文化も学ぶ
死ぬはずのプログラムを無理に生かしておいてはいけない
「魔法」に頼りすぎてはいけない
DRY原則
そのコードに触れてはならない!
状態だけでなく「ふるまい」もカプセル化する
浮動小数点数は実数ではない
オープンソースプロジェクトで夢を実現する
API設計の黄金律
超人の神話
ハードワークは報われない
バグレポートの使い方
余分なコードは決して書かない
最初が肝心
プロセス間通信とアプリケーションの応答時間の関係
無駄な警告を排除する
コマンドラインツールを使う
プログラミング言語は複数習得すべき
IDEを知る
限界を知る
すべきことは常に明確に
大量のデータはデータベースで
いろいろな言葉を学ぶ
見積りとは何か
Hello, Worldから始めよう
プロジェクト自身にしゃべらせる
「その場しのぎ」が長生きしてしまう
正しい使い方を簡単に、誤った使い方を困難に
見えないものを見えるように
並行処理に有効なメッセージパッシング
未来へのメッセージ
ポリモーフィズムの利用機会を見逃さない
テスト担当者はプログラマの友人
バイナリは常に1つ
真実を語るはコードのみ
ビルドをおろそかにしない
プリミティブ型よりドメイン固有の型を
ユーザの操作ミスを防止する
プロのプログラマとは?
バージョン管理システムを有効に使う
いったんコンピュータから離れてみる
コードを読む
「人間」を知る
車輪の再発明の効用
シングルトンパターンの誘惑に負けない
パフォーマンスへの道は地雷コードで敷き詰められている
シンプルさは捨てることによって得られる
単一責任原則
「イエス」から始める
面倒でも自動化できることは自動化する
コード分析ツールを利用する
偶然の仕様ではなく本物の仕様のためのテストを書く
テストは夜間と週末に
テストのないソフトウェア開発はあり得ない
1人より2人
エラーがエラーを相殺してしまう
他者への思いやりを意識したコーディング
UNIXツールを友にする
正しいアルゴリズムとデータ構造を選ぶ
冗長なログは眠りを妨げる
WETなシステムはボトルネックが見つかりにくい
プログラマとテスターが協力してできること
コードは生涯サポートするつもりで書く
関数の「サイズ」を小さくする
コードを見る人のためにテストを書く
良いプログラマになるには
顧客の言葉はそのまま受け取らない
エラーを無視するな
リンカは魔法のプログラムではない
ペアプログラミングと「フロー」
テストは正確に、具体的に
ステートに注目する
命を吹き込む魔法
ロールプレイングゲーム
ルーチンワークをフローのきっかけに
プログラマが持つべき3つのスキル
快適な環境を追求する
見知らぬ人ともうまくやるには
不具合にテストを書いて立ち向かう
育ちのよいコード
Noといえることの大事さ
名前重要
人名
セブ・ローズ
Seb Rose
エドワード・ガーソン
Edward Garson
ジャイルズ・カルバン
Giles Colborne
フィリップ・ヴァン・ラーネン
Filip van Laenen
ヨルン・オルムハイム
Jorn Olmheim
ラジット・アタパトゥー
Rajith Attapattu
ウディ・ダーハン
Udi Dahan
ロバート・C・マーティン
Robert C. Martin
アンクル・ボブ
アラン・ケリー
Allan Kelly
ジョヴァンニ・アスプローニ
Giovanni Asproni
ダン・ノース
Dan North
ライアン・ブラッシュ
Ryan Brush
スティーブ・フリーマン
Steve Freeman
マティアス・カールソン
Mattias Karlsson
イェッチェル・キムチ
Yechiel Kimchi
カル・エヴァンス
Cal Evans
ケブリン・ヘニー
Kevlin Henney
クリント・シャンク
Clint Shank
グレゴー・ホーぺ
Gregor Hohpe
スティーブ・P・バーチャック
Steve Berczuk
ダン・バーグ・ヨーンソン
Dan Bergh Johnsson
ジョン・ジャガー
Jon Jagger
マイケル・フンガー
Michael Hunger
マイク・ルイス
Mike Lewis
ロッド・ベグビー
Rod Begbie
アンダース・ノラス
Anders Noras
ヴェリティ・ストブ
Verity Stob
アラン・グリフィス
Alan Griffiths
スティーブ・スミス
Steve Smith
カル・エヴァンス
Cal Evans
アイナー・ランドル
Einar Landre
チャック・アリソン
Chuck Allison
リチャード・モンソンヘーフェル
Richard Monson-Haefel
マイケル・フェザーズ
Michael Feathers
ライアン・ブラッシュ
Ryan Brush
オルヴ・モーダル
Olve Maudal
マット・ドーア
Matt Doar
ピート・グッドリフ
Pete Goodliffe
マーカス・ベイカー
Marcus Baker
ランディ・スタッフォード
Randy Stafford
ヨハンネス・ブロドワル
Johannes Brodwall
キャロル・ロビンソン
Carroll Robinson
ラッセル・ワインダー
Russel Winder
ハインツ・カブーズ
Heinz Kabutz
グレッグ・コルヴィン
Greg Colvin
ダン・バーグ・ヨーンソン
Dan Bergh Johnsson
ディオミディス・スピネリス
Diomidis Spinellis
クラウス・マルカルド
Klaus Marquardt
ジョヴァンニ・アスプローニ
Giovanni Asproni
トーマス・ゲスト
Thomas Guest
ダニエル・リンドナー
Daniel Lindner
クラウス・マルカルド
Klaus Marquardt
スコット・マイヤーズ
Scott Meyers
ジョン・ジャガー
Jon Jagger
ラッセル・ワインダー
Russel Winder
リンダ・ライジング
Linda Rising
カーク・ペパーディーン
Kirk Pepperdine
バーク・ハフネーゲル
Burk Hufnagel
スティーブ・フリーマン
Steve Freeman
ピーター・ゾンメルラード
Peter Sommerlad
スティーブ・P・バーチャック
Steve Berczuk
アイナー・ランドル
Einar Landre
ジャイルズ・カルバン
Giles Colborne
ディオミディス・スピネリス
Diomidis Spinellis
バーク・ハフネーゲル
Burk Hufnagel
カリアンヌ・バルク
Karianne Berg
ケース・ブレイスウェイト
Keith Braithwaite
ジェイソン・P・セージ
Jason P. Sage
サム・サーリスト
Sam Saariste
カーク・ペパーディーン
Kirk Pepperdine
ポール・W・ホーマー
Paul W. Homer
アレックス・ミラー
Alex Miller
ケイ・ホルストマン
Cay Horstmann
サラ・マウント
Sarah Mount
ケブリン・ヘニー
Kevlin Henney
ラジット・アタパトゥー
Rajith Attapattu
ニール・フォード
Neal Ford
エイドリアン・ワイブル
Adrian Wible
アラン・ケリー
Allan Kelly
アスラム・カーン
Aslam Khan
ディオミディス・スピネリス
Diomidis Spinellis
ヤン・クリチアン・"JC"・ヴァン・ウィンケル
Jan Christiaan “JC” van Winkel
ヨハンネス・ブロドワル
Johannes Brodwall
カーク・ペパーディーン
Kirk Pepperdine
ジャネット・グレゴリー
Janet Gregory
ユーリー・ズバリョフ
Yuriy Zubarev
ケース・ブレイスウェイト
Keith Braithwaite
ジェラルド・メサローシュ
Gerard Meszaros
ピート・グッドリフ
Pete Goodliffe
ネイト・ジャクソン
Nate Jackson
ピート・グッドリフ
Pete Goodliffe
ウォルター・ブライト
Walter Bright
グドニー・ハウクネス
Gudny Hauknes
カリ・ロスランド
Kari Rossland
アン・カトリン・ガナット
Ann Katrin Gagnat
ケブリン・ヘニー
Kevlin Henney
ニクラス・ニルソン
Niclas Nilsson
関将俊
宮川達彦
吉岡弘隆
舘野祐一
小飼弾
和田卓人
森田創
宮川達彦
まつもとゆきひろ