Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Code Complete 第2版 第1部 第4章 / Code Complete Secon...
Search
taroosg
December 04, 2018
Programming
69
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Code Complete 第2版 第1部 第4章 / Code Complete Second Edition Part 1 Chapter 4
taroosg
December 04, 2018
More Decks by taroosg
See All by taroosg
自走のためのメンタル / mental-for-self-running
taroosg
0
46
Code Complete 第2版 第2部 第5章 / Code Complete Second Edition Part 02 Chapter 05
taroosg
0
83
let's-deploy
taroosg
0
53
PCに関するジェネレーションギャップの話 / Generation Gap on PC
taroosg
0
49
ブラウザゲームをハッキング / Hacking browser games
taroosg
0
730
Code Complete 第2版 第1部 第3章 / Code Complete Second Edition Part 1 Chapter 3
taroosg
0
110
Code Complete 第2版 第1部 第1章&第2章 / Code Complete Second Edition Part 1 Chapter 1 and Chapter 2
taroosg
1
45
はじめてのプログラミング教育 / First programming education
taroosg
0
58
Other Decks in Programming
See All in Programming
What's New in Android 2026
veronikapj
0
270
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.8k
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.4k
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.9k
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
330
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
230
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.8k
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
440
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
490
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
19k
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
980
FastAPI の並行処理モデルを完全に理解する
hoto17296
1
250
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
97
6.8k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.4k
KATA
mclloyd
PRO
35
15k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
280
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
540
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
680
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Transcript
code complete 第2版 4章 20181204読んだ内容まとめてLT会#02 Taro Ohsugi
この発表には発表者個人の経験・見解が多分に含まれています. 用量・用法を守って正しくお使いください.
自己紹介 ▪大杉太郎 ・G's ACADEMY FUKUOKA講師 ・年齢:31 出身:茨城県→北海道→東京→福岡 ▪好きな技術とか ・javascript,firebase,ajax ・PHP,laravel
・データベースの設計とか ▪好きなもの ・旅行,写真,Ardbeg taro_ohsugi taro.osg
code complete 第2版 ▪読み始めたきっかけ:コードを書くときの考え方を研究したかった. ▪上下巻で計1173ページ. (上巻628ページ & 下巻545ページ) ▪漸く!第1部!完! (`・ω・)b
(なお上巻は第4部まである模様)
第4章 コンストラクトの重要な決断
前回(第3章)の話
実装前の準備がとっっっっっても重要 ▪計画段階で欠陥を発見する場合と実装段階で欠陥を発見する場合 ▪準備不足の原因は知識や理解のない上司→論理,メタファ,データ ▪解決すべき課題は必ず明文化しよう!! ▪アーキテクチャ設計を十分考慮し,採用不採用の理由を明確に!
- WARNING - この発表には宗教戦争的要素が含まれる可能性があります. 用量・用法を守って正しくお使いください.
今回(第4章)の内容 ▪プログラム言語の選択 ▪プログラミング規約 ▪コンストラクションプラクティス ▪まとめ
プログラミング言語の選択
プログラミング言語の選択 「プログラミング言語は,生産性やコードの品質に大きく影響する」 「高級言語を使うプログラマの生産性と品質は低水準言語より高い」 「高級言語や生産性,信頼性,単純さ,理解しやすさに優れる」
は??
プログラミング言語は生産性や品質に影響する ▪言語による差 ・新しい言語はできることが多い or 簡単 ▪数字表記の例 ・アラビア表記が出現する以前は「割り算が神の領域」 ・「0」が存在しなかったため10進の表記ができなかったため ・(アラビア表記は7世紀くらいに確立) 割り算マスターたち
言語の選択による生産性と品質の影響 ▪慣れ ・使い慣れた言語の生産性はそうでない言語より高い. ・3年以上使っている言語での生産性は初めての言語より30%高い! (Boehm et al. 2000)
高級言語を使うことで生産性と品質が高まる ▪高級言語 ・C++, Java, Smalltalk, Visual Basic ・低水準言語と比較して生産性や信頼性が5-15倍向上する! (Brooks 1987;
Jones 1998; Boehm 2000) ・1行のコードでより多くの命令を伝えられる. ▪そうでない言語 ・C, アセンブラ
高級言語を使うことで生産性と品質が高まる
うーん?? ▪自然言語に例える! ・「言語の表現力と物事を考える能力に関連がある」説 (Sapir, Whorf 1956) ・言葉を知らなければ,表現したりや系統立てて説明したりできない! ▪言語を理解していないと... ・「C++だと思ったら,C++っぽく書かれたFORTRANだったでござる」 (Hanson
1984; Yourdon 1986)
言語の紹介 (知らなかった内容とか) ▪アセンブラ ・マシン特有の機械語なのでプロセッサ依存.(intelとかmotorolaとか) ・実行速度の改善とコードサイズの縮小以外にはほぼ使用しない. ▪COBOL (COmon Business-Oriented Language) ・当初はアメリカ国防総省で使用するために開発された.
▪FORTRAN (FORmula TRANslation) ・変数やループの初出.
言語の紹介 (知ってた内容とか) ▪Javascript Javaとはそれほど関係がない 以下Javaとの関連 ・すごい人がlivescriptという言語を開発 ・いまJavaが熱いらしい ・せや,javascriptって名前に変えたろ!
プログラミング規約
プログラミング規約 ▪高品質なソフトウェア ・アーキテクチャの概念と実装の間に関連性を見出せる. ・変数名,クラス名,フォーマット規約,コメント規約を一貫させる. ▪ガイドラインの威力 ・アーキテクチャのガイドラインはプログラムの構造バランスを整える. ・コンストラクションのガイドラインは各パーツの関連を整える. ・規約が統一されていないと各自勝手に実装し始めてメシマズ展開.
で,どうする?? ▪順番 ①プログラミング規約の規定 ・規約に従ったプログラムを後から改造できないくらいに! ②ソフトウェアのコンストラクション ・規約に沿って計画を立てる.
テクノロジの波
テクノロジの波 ▪自分がどこにいるのか ・成熟した環境:強力なツール,日本語ドキュメント,ググれる ・始まりの環境:バグ祭り,糞ドキュメント,バージョンのリリースで死 ▪始まりが悪いわけではない ・作業の内容が変わるだけ ・機能の解明,エラーのデバッグ,新バージョンのための修正
プログラミングの考え方 ▪プログラミング言語の「中で」表現する ・言語の構造から表現する内容を決める. ・「こんな機能がある」→「こういうことできそう」 ▪プログラミング言語の「中へ」表現する ・表現したい考えを決めてから言語での表現方法を決める ・「こういうことしたい」→「こう書けばおk」 両者の差異を理解することが重要
コンストラクションプラクティスの例
コーディング ・事前に行う設計とキーボードの前で行う設計は明確か. ・変数名,コメント,レイアウトの規約は明確か. ・エラー処理,セキュリティ対策,パフォーマンスの重要度は明確か. ・テクノロジーの波を意識しているか.アプローチは適切か.
チームワーク ・統合手続きは明確か.踏まなければならない手続きを定義する. ・ペアプログラミングの組み込み ・1人でのプログラミング ・両者の組み合わせ
品質保証 ・コードを書く前にテストケースを定義しているか ・単体テストの実施 ・チェックイン前に各コードをチェックするか ・統合テストの実施 ・互いにコードレビューを実施できるか
ツール ・バージョン管理 ・言語とそのバージョン ・フレームワークの採用是非の決定 ・標準機能以外の使用に関する規定 ・エディタ,デバッガ,テストなど必要なツールの洗い出しと入手 ・(十分なスペックのPC)
まとめ
まとめ ▪高級言語を使おう! ▪コードを書く前に規約を決めよう! (逆は死) ▪考えを決めて,言語でどう表現するかを考えよう! ▪波のどこにいますか??
ご静聴ありがとうございました!