Clean Coder プロフェッショナルプログラマへの道
RobertC.Martin(著者)
,角征典(訳者)
/アスキードワンゴ
作品情報
ソフトウェアのプロとは? プロの行動とは? 衝突・厳しいスケジュール・理不尽なマネージャにどう対応すべきか? いつ・どのようなときに「ノー」と言うべきか? プロはプレッシャーにどう対応するのか?
もっとみる
商品情報
- 著者
- RobertC.Martin, 角征典
- ジャンル
- コンピュータ・情報 - コンピュータ・インターネット
- 出版社
- ドワンゴ
- 掲載誌・レーベル
- アスキードワンゴ
- 書籍発売日
- 2018.07.27
- Reader Store発売日
- 2018.08.01
- ファイルサイズ
- 3.7MB
以下の製品には非対応です
この作品のレビュー
平均 3.9 (7件のレビュー)
-
週1の会社の輪読会にて3か月かけて読了。各章・節が短くて読みやすい。物語形式の翻訳ものは、若干ついていけず読みにくい印象だけれど、本書くらいの短さならば許容の範囲内。「プロ」のエンジニアとしての行動規…範が受け取れる。ピックアップ正しい「イエス」を言うには「ノー」も恐れずに言う」「プロは頼まれたこと全てに「イエス」と言う必要はないが、「イエス」と言えるような創造的な方法を探す必要がある」「コーディングする上では体が資本。そして、一人で孤独にやるものではない」「できたものを動かしてみるとやりたいことが変化する」続きを読む
投稿日:2023.01.19
【プロ意識】
■責任を取る
■第一に危害を加えてはいけない
・機能に危害を加えてはいけない
QAは何も見つけてはいけない
動作することを「把握しなければ」いけない
自動QA
・構造に危害を加えて…はいけない
本物のプロは、構造を犠牲にして機能を届けるのはバカのやることだと思っている。コードの柔軟性はその構造にかかっている。構造が不安定ならば未来も不安定になる。
あらゆるソフトウェアプロジェクトの基本的な前提として、ソフトウェアは変更しやすいというものがある。構造に柔軟性がなくなり、この前提が崩れてしまえば、業界全体の経済モデルが根底から覆されてしまう。
つまり、ソフトウェアは適切なコストで変更できなければいけない。
…
すべてはテストに通じる。コードのほぼ100%を網羅する自動テストスイートがあり、思いついたらすぐに実行できるのであれば、コードを変更するのは怖くない。どうすればコードの変更が怖くないと証明できるのだろうか?それは、常に変更すればいいのである。
■労働倫理
・自分の専門分野を知る
※すべてのソフトウェアのプロが備えるべき最低限のこと
▶デザインパターン:GOFの24のパターンについて説明できる。POSAのパターンを実際に使える知識がある。
▶設計原則:SOLID原則を知っている。コンポーネントの原則を熟知している。
▶方法論:XP・スクラム・リーン・カンパン・ウォーターフォール・構造化分析・構造化設計を理解している。
▶規律:TDD・オブジェクト指向設計・構造化プログラミング・継続的インテグレーション・ペアプログラミングを実践している。
▶成果物:UML・DFD・構造チャート・ペトリネット・状態遷移図・状態遷移表・フローチャート・ディシジョンテーブルの使い方を知っている。
・継続的学習
・練習
・協力
・指導
■ドメインを知る
■雇用主や顧客に対して親身になる
■謙虚
■TDDの3原則
1. 失敗するユニットテストを書くまでプロダクションコードを書いてはいけない。
2.テストを失敗させる目的以外でユニットテストを書いてはいけない。なお、コンパイルできないのも失敗に含まれる。
3.失敗しているユニットテストが成功するまで他のプロダクションコードを書いてはいけない。
■TDDの利点
・確実性
・欠陥混入率
・勇気
・ドキュメント
・設計
TDDの3原則に従ってテストを書こうとするとジレンマに陥る。下がり甘きたコードのことはすでに頭にある。だが、まだコードがないので、先にユニットテストを失敗させろと3原則に書いてある!これはつまり、これから書くコードを先にテストしろということだ。
コードをテストする上で問題となるのは、コードを分離しなければいけない点だ。例えば、他の関数を呼び出している関数をテストするのは難しい。テストを書くには、その関数を他から切り離す方法を探さなければいけない。言い換えれば、テストファーストをするには、優れた設計について考えなければいけないということだ。
テストを先に書かなければ、複数の関数をテストのできない大きな塊に詰め込んでしまうことになる。あとからテストを書くとなると、大きな塊全体の入出力のテストならできるだろうが、個別の関数をテストするのは難しい。
つまり、3原則に従ってテストを先に書けば、うまく疎結合した設計ができるようになる。優れた設計に導いてくれるツールを採用しないプロがいるだろうか?
「テストなんかあとで書けるよ」と言うかもしれない。だが、それは違う。あとで書くことはできないのだ。本当に。あとで書けるテストも少しはあるだろう。注意深く計測していけば、あとでカバレッジ率を高めることもできるだろう。だが、あとで書いたテストは防御なのだ。先に書くテストは攻撃である。あとで書くテストは、コードを書いた人や問題の解決方法を知っている人が書くものだ。こうしたテストは、先に書くテストほど鋭いものではない。
■早すぎる詳細化
ビジネスもプログラマも「早すぎる詳細化」の罠に陥りがちだ。ビジネスは、プロジェクトを承認する前に、これから手に入れるものを正確に知りたいと思う。開発者は、プロジェクト見積もる前に、これから開発するものを正確に知りたいと思う。どちらもできるはずのないことを詳細化しようとして、コストを無駄にしているのだ。
・不確定性原理
問題は、紙に書かれたものと実際に動くシステムが違うことだ。仕様どおりに実装されたシステムを見ると、ビジネスは自分の欲しかったものじゃないと言う。要求が実際に動いているのを見ると、もっとよいアイデアが浮かんでくる。そして、それは目の前にあるものじゃない。これには、観察者効果(あるいは不確定性原理)が影響している。動いている機能をビジネスに見せると、新しい情報を与えたことになる。そして、その新しい情報は、システムの見方に影響を与える。つまり、要求を詳細化していくと、開発中のシステムとかけ離れていくのだ。
・見積もりの不安
見積もりの不安
開発者も詳細化の罠に陥ることがある。システムをもっと正確に見積もらなければいけないと思っているのだ。だが、正確に見積もることなどできない。
まず、完全な情報を持っていても、見積もりにはバラツキがでる。次に、不確定性原理によっさて、早すぎる詳細化は無効にされている。要求は変化するので、詳細化は現実的ではないのだ。
プロの開発者は、精度の低い要求からでも見積もりは可能であり、見積もるべきであることを理解している。また、見積もりは見積もりであることもわかっている。見積もりには必ずエラーバー(誤差範囲)を設けて、ビジネスにその不確実性を理解してもらっている。続きを読む投稿日:2022.11.26
新刊自動購入は、今後配信となるシリーズの最新刊を毎号自動的にお届けするサービスです。
- ・発売と同時にすぐにお手元のデバイスに追加!
- ・買い逃すことがありません!
- ・いつでも解約ができるから安心!
※新刊自動購入の対象となるコンテンツは、次回配信分からとなります。現在発売中の最新号を含め、既刊の号は含まれません。ご契約はページ右の「新刊自動購入を始める」からお手続きください。
※ご契約をいただくと、このシリーズのコンテンツを配信する都度、毎回決済となります。配信されるコンテンツによって発売日・金額が異なる場合があります。ご契約中は自動的に販売を継続します。
不定期に刊行される「増刊号」「特別号」等も、自動購入の対象に含まれますのでご了承ください。(シリーズ名が異なるものは対象となりません)
※再開の見込みの立たない休刊、廃刊、出版社やReader Store側の事由で契約を終了させていただくことがあります。
※My Sony IDを削除すると新刊自動購入は解約となります。
お支払方法:クレジットカードのみ
解約方法:マイページの「予約・新刊自動購入設定」より、随時解約可能です続巻自動購入は、今後配信となるシリーズの最新刊を毎号自動的にお届けするサービスです。
- ・発売と同時にすぐにお手元のデバイスに追加!
- ・買い逃すことがありません!
- ・いつでも解約ができるから安心!
- ・優待ポイントが2倍になるおトクなキャンペーン実施中!
※続巻自動購入の対象となるコンテンツは、次回配信分からとなります。現在発売中の最新巻を含め、既刊の巻は含まれません。ご契約はページ右の「続巻自動購入を始める」からお手続きください。
※ご契約をいただくと、このシリーズのコンテンツを配信する都度、毎回決済となります。配信されるコンテンツによって発売日・金額が異なる場合があります。ご契約中は自動的に販売を継続します。
不定期に刊行される特別号等も自動購入の対象に含まれる場合がありますのでご了承ください。(シリーズ名が異なるものは対象となりません)
※再開の見込みの立たない休刊、廃刊、出版社やReader Store側の事由で契約を終了させていただくことがあります。
※My Sony IDを削除すると続巻自動購入は解約となります。
お支払方法:クレジットカードのみ
解約方法:マイページの「予約自動購入設定」より、随時解約可能ですReader Store BOOK GIFT とは
ご家族、ご友人などに電子書籍をギフトとしてプレゼントすることができる機能です。
贈りたい本を「プレゼントする」のボタンからご購入頂き、お受け取り用のリンクをメールなどでお知らせするだけでOK!
ぜひお誕生日のお祝いや、おすすめしたい本をプレゼントしてみてください。※ギフトのお受け取り期限はご購入後6ヶ月となります。お受け取りされないまま期限を過ぎた場合、お受け取りや払い戻しはできませんのでご注意ください。
※お受け取りになる方がすでに同じ本をお持ちの場合でも払い戻しはできません。
※ギフトのお受け取りにはサインアップ(無料)が必要です。
※ご自身の本棚の本を贈ることはできません。
※ポイント、クーポンの利用はできません。クーポンコード登録
Reader Storeをご利用のお客様へ
ご利用ありがとうございます!
エラー(エラーコード: )
ご協力ありがとうございました
参考にさせていただきます。